先看一个程序:
#include <stdio.h>
#include <malloc.h>
void f(int * q)
{
*q = 200;
//free(q);//错误过早释放动态内存空间
}
int main()
{
int * p = (int *)malloc(sizeof(int));
*p = 10;
printf("%d\n", p);
f(p);
printf("%d\n", p);
return 0;
}
说明在f函数中如果打开注释行free(q);会导致存放200数值的内存空间被释放掉,这样的化*p肯定拿不到被修改后的200了。
本文详细阐述了在C语言中动态分配内存后,如何正确地在函数间传递指针并避免意外释放内存,通过一个具体的程序示例,解释了在函数内部对动态分配的内存进行操作时可能出现的问题,并提供了正确的解决方案。
14万+

被折叠的 条评论
为什么被折叠?



