我正在使用realloc
来减少矢量的大小。我只想放弃最后一个位置。所以,如果我有10个位置,并且我使用realloc
为9 * sizeof(my_struct)
分配足够的空间,那么矢量会被截断并保留旧数据但最后位置?我认为这是正确的,但是当我尝试在realloc之后打印该值时,我得到Segmentation Fault
错误。这是我的代码:
//Instanciate the vector
my_struct *struc;
my_struct *buffer;
//Allocate space for 10 slots
struc = (my_struct *) malloc(10 * sizeof(my_struct));
//realloc for 9 slots
buffer = (my_struct *) realloc(struc, 9 * sizeof(my_struct));
if(buffer != NULL){
struc = buffer;
}
现在如果我尝试使用printf
检查向量中的元素,我会得到Segmentaition Fault
OBS:在重新分配之前,Vector已经填满了数据。我没有在这里发帖,因为我认为这是不必要的......想象一下这个代码中已有数据的载体。
答案 0 :(得分:1)
您的数据可以realloc()
移动。因此,如果有任何指向数据的指针,则在调用之后,这些指针将变为无效。