01/10/2018, 16:34

Cách dùng hàm free() trong C và lời thầy giáo dạy

Chào mọi người, hôm nay mình học về con trỏ trong C. trước giờ mình học thì cứ cấp phát cho con trỏ 1 vùng nhớ để dùng ( malloc, calloc, realloc) rồi khi dùng xong thì mình gọi free. Nhưng hôm nay, trong lớp dạy nhúng của mình, anh thầy bảo trước khi gọi free phải đưa con trỏ về đầu vùng nhớ mà mình cấp phát cho nó. ví dụ int* p = (int*)malloc( sizeof(int) * 5 ) thì sau khi chạy vòng for() dịch con trỏ đó đi 5 đơn vị, trước khi khi gọi free() cần phải đưa con trỏ về đầu tiên vùng nhớ nó được cấp phát ban đầu free(p-5).
Trước giờ mình k đọc thấy có phần này, chỉ thấy khi nào k dùng nữa thì gọi free(p).
Mọi người đính chính dùm mình với, liệu có cần đưa p trỏ về vị trí đầu tiên của khôi memory lúc malloc free(p-5) hay không ?

*grab popcorn* viết 18:42 ngày 01/10/2018

https://en.cppreference.com/w/c/memory/free

The behavior is undefined if the value of ptr does not equal a value returned earlier by malloc(), calloc(), realloc(), or aligned_alloc() (since C11)

Nên là phải đưa về vị trí ban đầu nhé. :3

Bài liên quan
0