使用realloc分配不成功,同时加free提示triggered a breakpoint. 请问这是什么意思
一个简单的测试动态数组的程序
程序代码:# include <stdio.h>
# include <malloc.h>
int main(void)
{
int a[5];
int * pArr;
int len;
int i;
//创造动态数组
printf("请输入想要的元素个数:");
scanf_s("%d", &len);
pArr = (int *)malloc(sizeof(int) * len); //开头的pArr本身就是地址变量,不要用int *pArr=... ;
//(int *)强制转换告诉是int类型地址变量,让系统知道按4个字节一个变量分配
//对动态数组进行赋值
printf("对元素进行赋值:\n");
for (i = 0; i < len; ++i)
scanf_s("%d", &pArr[i]); //与数组一样的使用方式pArr代表第一个元素地址,*(pArr+1)就是第二个也就是pArr[1]
//对数组进行输出
printf("一维数组的内容是:\n");
for (i = 0; i < len; ++i)
printf("%d\n", pArr[i]);
//出错,提示triggered a breakpoint.
realloc(pArr, 100);
printf("\n%d\n", sizeof(*pArr) );
free(pArr); //释放后pArr所指向的地址的内存不再存在,但pArr所保存的"地址"依然可以存在
return 0;
}
最后修改的时候是重新分配了100个字节,想看看最后是不是确实分配了100个,
1.发现如果加了最后一句free(pArr)会提示triggered a breakpoint,这时候应该已经执行完上面了,这是什么意思啊?
2.删除free后就不会出错,但最后的结果是:
请输入想要的元素个数:2
对元素进行赋值:
3
4
一维数组的内容是:
3
4
4
结果并没有修改字节数,这是为什么呢









