[英]Segmentation fault (core dumped) error when free method is called
我正在嘗試為char數組釋放內存空間:
static void cleanArray(char* array)
{
int i;
int size = strlen(array) + 1;
for(i = 0; i < size; i++)
free(array[i]);
free(array);
}
int main(){
char* array = (char *)malloc(1 * sizeof(char*));
int c;
for(c=0;c<100;c++){ //code to populate some string values in the array.
void *p = realloc(array, (strlen(array)+strlen(message)+1)*sizeof(char*));
array = p;
strcat(array, "some string");
}
cleanArray(array); //I get error only when I call this method.
}
但是對於以上代碼,我遇到了Segmentation fault
錯誤。
當我只嘗試以下代碼而不是cleanArray()時,我不認為該數組已釋放:
free(array);
printf("%s",array); //it prints all the values in the array. Hence, I concluded it is not freedup.
free(array[i]);
循環中有問題。 array[i]
是一個char值(通過整數提升實際上是int),並將該值傳遞給free
將被視為指針。 現在,您正在嘗試釋放對該地址不了解的地址。
存在多個問題:
free()
。 只需調用free(array)
。 malloc()
和realloc()
sizeof(char*)
不正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.