int main()
{
int size1 = 0;
int size2 = 0;
int size3 = 0;
printf("malloc数组的大小:\n");
printf("calloc数组的大小:\n");
//printf("realloc数组的大小:");
scanf("%d", &size1);
scanf("%d", &size2);
//scanf("%d", &size3);
int i = 0;
int* arr1 = (int*)malloc(size1 * sizeof(int));
if (arr1 == NULL)
{
printf("arr1数组分配失败");
return 1;
}
for (i = 1; i < size1+1; i++)
{
arr1[i-1] = i;
}
for (i = 0; i < size1; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
int* arr2 = (int*)calloc(size2, sizeof(int));
if (arr2 == NULL)
{
printf("arr2数组分配失败");
return 1;
}
for (i = 1; i < size2+1; i++)
{
arr1[i-1] = i;
}
for (i = 0; i < size2; i++)
{
printf("%d ", arr1[i]);
}
printf("\n");
int* arr3 = (int*)realloc(arr1, 100);
if (arr3 == NULL)
{
printf("arr3数组分配失败");
return 1;
}
free(arr1);
arr1 = NULL;
free(arr2);
arr2 = NULL;
return 0;
}
这段程序运行到最后free arr1和arr2数组的时候,报错:已在 2024-1-11.exe 中执行断点指令(__debugbreak()语句或类似调用)。如果我将最后一段程序给注释就没有问题。
/*free(arr1);
arr1 = NULL;
free(arr2);
arr2 = NULL;*/
请问这是什么原因呢。