gpt4 book ai didi

c - 在局部函数中动态分配和释放内存

转载 作者:太空狗 更新时间:2023-10-29 15:17:39 26 4
gpt4 key购买 nike

考虑以下函数:

void free_or_not ( int count ) {
int i ;
int *ip = malloc ( count * sizeof ( int ) ) ;

for ( i = 0 ; i < count ; i ++ )
ip[i] = i ;

for ( i = 0 ; i < count ; i ++ )
printf ( "%d\n" , ip[i] ) ;

free ( ip ) ;
}

如果我不在 free_or_not() 中调用 free() 会导致内存泄漏吗?

最佳答案

Will this cause memory leak if I don't call free() inside free_or_not()?

是的,会造成内存泄漏。一旦您的函数完成执行,您就没有任何指针指向分配给free()它的内存。

解决方案:如果您将函数的返回类型更改为 void *(或类似类型)并返回分配的指针 (ip)从函数中,然后,您可以收集调用者的指针和 free() 来自此函数调用者的指针。

关于c - 在局部函数中动态分配和释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258456/

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