free() 出错
本人是新手,大佬勿喷!! 第一次写 !!
使用 malloc 申请的地址 中途改变指针 再用 free() 释放空间时 就会报错
以下是错误代码
int main()
{
int a[] = { 1,9,9 };
int sz = sizeof(a) / sizeof(a[0]);
int* arr = (int*)malloc(sizeof(int) * sz);
assert(arr);
int returnSize = 0;
//plusOne函数返回一个指针
arr = plusOne(a, sz, &returnSize);
printf("%p\n", arr);
int i = 0;
for (i = 0; i < returnSize; i++)
{
printf("%d ", arr[i]);
}
printf("%p\n", arr);
free(arr);
arr = NULL;
return 0;
}
报错信息
改正后的代码
int main()
{
int a[] = {1,9,9};
int sz = sizeof(a) / sizeof(a[0]);
int returnSize = 0;
int* arr = plusOne(a, sz, &returnSize);
printf("%p\n", arr);
int i = 0;
for (i = 0; i < returnSize; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
printf("%p\n", arr);
return 0;
}
当函数返回指针时 在主函数中 应直接定义指针变脸 去接收 返回值