ash*_*ntu 4 c free memory-leaks
考虑以下功能:
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 ) ;
}
Run Code Online (Sandbox Code Playgroud)
如果我不打电话给free()内部会导致内存泄漏free_or_not()吗?
如果我不打电话给
free()内部会导致内存泄漏free_or_not()吗?
是的,它会导致内存泄漏.一旦你的函数完成执行,你就没有任何指向它的分配内存的指针free().
解决方案:如果将函数的返回类型更改为void *(或类似)并ip从函数返回已分配的指针(),则可以free()从调用者和此函数调用者的指针中收集该指针.