gpt4 book ai didi

c - 我是否有可能知道我是否已在 C 中正确清理?

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:37 25 4
gpt4 key购买 nike

我的代码看起来像,

#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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com