我有一些代码看起来像,

#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
如果我在我的程序中泄漏内存,当我的程序死亡时,内存是否自动释放?
在大多数现代操作系统上,是的,当进程终止时,操作系统会回收所有内存但你不应该把这当作泄露记忆的借口!

07-24 09:44
查看更多