免费的C中未初始化的指针

Liu*_*Liu -2 c free

如果我为指针动态分配了空间,请列出以下内容:

int *a = (int*)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

代码完成后,我应该释放一个吗?谢谢!

438*_*427 6

我认为您对指针有一些误解。

您的标题是:

免费的未初始化的指针...

而你的代码是

int *a = (int*)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

问题是代码中没有未初始化的指针。代码中唯一的指针是变量a,并由返回的值对其进行初始化malloc

释放未初始化的指针将是不好的-例如:

int *a;  // a is an uninitialized pointer

free(a);  // Real bad - don't do this
Run Code Online (Sandbox Code Playgroud)

但是,由于实际上是初始化了指针,所以-是的,使用对象/内存指针指向后,必须调用free a。指向对象(即内存)是否已分配值都无关紧要。

一般规则:的每个呼叫都malloc必须有一个的呼叫free

(例外:如果程序终止,则无需调用free