Tôi biết chúng ta nên giải phóng bất kỳ biến nào được phân bổ với malloc, nhưng nếu tôi trả về biến đó trong một hàm thì sao? Một cái gì đó như thế này:Trả về biến được phân bổ
char *somefunction(int somearg){
char *str;
str=(char *)malloc(sizeof(char *));
//some code
return str;
}
Tôi có nên tự do không? Làm thế nào tôi có thể làm điều đó?
Đối số 'malloc()' gần như chắc chắn sai - bạn phân bổ đủ bộ nhớ để lưu trữ 'char *', nhưng gán cho một con trỏ trỏ tới 'char' (và không cần phải trả lại giá trị của 'malloc' trong C, hoặc là). 'str = malloc (N * sizeof * str);' là cách tốt hơn để viết nó. – caf
Như CAF đã nói, bạn không nên bỏ giá trị trả về của malloc(). Xem http://stackoverflow.com/questions/1565496/specifically-whats-dangerous-about-casting-the-result-of-malloc et al – Mawg