XCODE写C语言时给指针分配内存后需要释放吗?

int main(int argc, const char * argv[]) {

int A[8]={-2,1,6,-3,7,5,-4, -3};

result=(int*)malloc(10*sizeof(int));

left_result=(int*)malloc(10*sizeof(int));

right_result=(int*)malloc(10*sizeof(int));

cross_result=(int*)malloc(10*sizeof(int));

int *jieguo=FIND_MAXIMUM_SUBARRAY(A, 0, 7);

printf("The max left is %d\n",jieguo[0]+1);

printf("The max right is %d\n",jieguo[1]+1);

printf("The sum of largest subarray is %d\n",jieguo[2]);

//free(result);

//free(left_result);

//free(right_result);

//free(cross_result);

return 0;

}
这是我写求最大子序列时的代码,写了free后编译器报错Thread 1: signal SIGABRT,我查了一下是对象释放过度的意思,把几行free都注释掉后就没有报错了,请教一下是编译器有自动释放的功能还是另有原因呢?

您好,需要的:
#define POINTER_MAX_SIZE
S8* pointer = NULL;/
pointer = malloc(POINTER_MAX_SIZE);
if(NULL!=pointer )
{
free(pointer);
pointer = NULL;
}

说明文档:
#define POINTER_MAX_SIZE
S8* pointer = NULL;/*养成好习惯,定义指针时初始化为NULL指针*/

/*为指针pointer分配POINTER_MAX_SIZE大小的空间*/
pointer = malloc(POINTER_MAX_SIZE);

/*在用pointer之前必须检验它是否为空*/
if(NULL!=pointer )
{
free(pointer);/*释放指针pointer*/
pointer = NULL;/*释放指针后一定别忘了把它置为NULL,不然就成了野指针,乱指一气,很危险很暴力*/
}
温馨提示:答案为网友推荐,仅供参考
相似回答