求大神指教,跪求为什么下面的c++程序崩溃了?我估计是动态分配的问题。。

2025-01-06 08:49:51
推荐回答(3个)
回答1:

student r;
student *p;
r[1].set_student(); ====>为什么是r[1] ?
另外,如果用realloc的话,p事先要用malloc申请
你的程序中p指向了r,但r的位置在栈里,realloc要从堆上申请分配内存,二者不可比。所以我估计这句p=(student *)realloc(p,j*sizeof(student)是有问题的。
解决办法是一开始就让p用malloc申请动态内存,然后根据输入n,调用realloc动态调整

回答2:

realloc 后应该检查一下是否为空的

另外,realloc应该接收的是malloc分析的内存地址,不能是栈上变量的内存地址

回答3:

放个图啊