void* malloc(size_t size);
// Hàm main - chương trình chính bắt đầu từ đây
int main() {
}
// Hàm setup - được gọi một lần khi bắt đầu chương trình
void setup() {
Serial.begin(115200); // Bắt đầu giao tiếp serial với baudrate 115200
char *s; // Khai báo con trỏ s kiểu char
s = (char*) malloc(30*sizeof(char)); // Cấp phát vùng nhớ động cho s với kích thước 30 byte
size_t freeHeapSize = xPortGetFreeHeapSize(); // Lấy kích thước heap còn trống
size_t minimumEverFreeHeapSize = xPortGetMinimumEverFreeHeapSize(); // Lấy kích thước heap trống nhỏ nhất từ trước đến nay
if(s){ // Kiểm tra xem việc cấp phát bộ nhớ có thành công không
strcpy(s, "Demo Heap5: memory management"); // Sao chép chuỗi "Demo Heap5: memory management" vào vùng nhớ mà con trỏ s trỏ tới
Serial.println(s); // In chuỗi s ra màn hình kết nối giữa PC và ESP32
freeHeapSize = xPortGetFreeHeapSize(); // Lấy lại kích thước heap còn trống sau khi cấp phát
Serial.println(freeHeapSize); // In ra kích thước heap còn trống
minimumEverFreeHeapSize = xPortGetMinimumEverFreeHeapSize(); // Lấy lại kích thước heap trống nhỏ nhất từ trước đến nay
Serial.println(minimumEverFreeHeapSize); // In ra giá trị nhỏ nhất của heap trống từ trước đến nay
vPortFree(s); // Giải phóng bộ nhớ đã cấp phát cho con trỏ s
}
freeHeapSize = xPortGetFreeHeapSize(); // Lấy kích thước heap còn trống sau khi giải phóng
Serial.println(freeHeapSize); // In ra kích thước heap còn trống
minimumEverFreeHeapSize = xPortGetMinimumEverFreeHeapSize(); // Lấy lại kích thước heap trống nhỏ nhất từ trước đến nay
Serial.println(minimumEverFreeHeapSize); // In ra giá trị nhỏ nhất của heap trống từ trước đến nay
}
// Hàm loop - được gọi lặp đi lặp lại sau khi setup hoàn thành
void loop() {
// Execution should never get here
}