我有一些代码看起来像,
#include<stdlib.h>
#include<string.h>
char** someArray = NULL;
size_t numberOfEntriesInArray = 0;
void addToArray(char* someString){
someArray = realloc(someArray, (numberOfEntriesInArray+1) * sizeof(char*));
someArray[numberOfEntriesInArray] = malloc( (strlen(someString) + 1) * sizeof(char) );
strcpy(someArray[numberOfEntriesInArray], someString);
numberOfEntriesInArray++;
}
void deleteSomeArray(){
int i;
for (i = 0; i < numberOfEntriesInArray; i++){
free(someArray[i]);
}
free(someArray);
}
int main(){
addToArray( .. );
..
deleteSomeArray();
}
有没有办法让我知道
deleteSomeArray
工作正常?也就是说,有没有办法检查是否还有更多的内存需要释放?
附笔。
如果我在我的程序中泄漏内存,当我的程序死亡时,内存是否自动释放如果没有,有没有办法找到泄露的记忆?
最佳答案
有没有办法检查是否还有更多的内存需要释放?
使用memory debugger如果您使用的是Linux(或类似的),那么典型的例子是Valgrind。
如果我在我的程序中泄漏内存,当我的程序死亡时,内存是否自动释放?
在大多数现代操作系统上,是的,当进程终止时,操作系统会回收所有内存但你不应该把这当作泄露记忆的借口!