我的代码看起来像,
#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
是否正常工作?
即有没有办法检查是否还有更多内存需要释放?
附言
如果我在我的程序中泄漏内存,当我的程序结束时内存会自动释放吗?如果没有,是否有办法找到泄漏的内存?
最佳答案
Is there a way to check if there is still more memory that needs to be freed?
使用 memory debugger .如果您在 Linux(或类似系统)中工作,那么典型示例是 Valgrind .
If I leak memory in my program, is the memory automatically freed when my program dies?
在大多数现代操作系统上,是的,操作系统会在进程终止时回收所有内存。但是你不应该把这当作内存泄漏的借口!
关于c - 我是否有可能知道我是否已在 C 中正确清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865171/