#include <Arduino_FreeRTOS.h>
#include <stdlib.h> // Thư viện cho malloc và free

void Task1(void *pvParameters) {
  // Sử dụng malloc để cấp phát bộ nhớ động
  int *p = (int *)malloc(sizeof(int) * 10); // Cấp phát bộ nhớ cho 10 số nguyên
  if (p != NULL) {
    for (int i = 0; i < 10; i++) {
      p[i] = i * i;
      Serial.println(p[i]);
    }
    free(p); // Giải phóng bộ nhớ
  } else {
    Serial.println("Failed to allocate memory");
  }
  
  vTaskDelete(NULL); // Kết thúc task
}

void setup() {
  Serial.begin(9600);
  // Tạo một task FreeRTOS
  xTaskCreate(
    Task1,      // Hàm task
    "Task1",    // Tên task
    128,        // Kích thước stack
    NULL,       // Tham số truyền vào task
    1,          // Độ ưu tiên của task
    NULL);      // Con trỏ handle của task
}

void loop() {
  // Không cần sử dụng trong FreeRTOS
}