如果我为指针动态分配了空间,请列出以下内容:
int *a = (int*)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)
代码完成后,我应该释放一个吗?谢谢!
我认为您对指针有一些误解。
您的标题是:
免费的未初始化的指针...
而你的代码是
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)