使用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
结果并没有修改字节数,这是为什么呢