重新分配结构向量后无法访问数据
Cant access data after realloc struct vector
我正在使用 realloc
来减小矢量的大小。我只想松开最后一个位置。所以,如果我有 10 个位置,并且我使用 realloc
为 9 * sizeof(my_struct)
分配足够的 space,向量会被截断并保留旧数据但保留最后一个位置吗?我认为这是正确的,但是当我尝试在 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 已被数据填满。我没有在这里 post 因为我认为这是不必要的...想象一下这段代码中已经包含数据的向量。
您的数据可以被 realloc()
移动。所以如果有任何指向数据的指针,在调用之后,这些指针将失效。
我正在使用 realloc
来减小矢量的大小。我只想松开最后一个位置。所以,如果我有 10 个位置,并且我使用 realloc
为 9 * sizeof(my_struct)
分配足够的 space,向量会被截断并保留旧数据但保留最后一个位置吗?我认为这是正确的,但是当我尝试在 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 已被数据填满。我没有在这里 post 因为我认为这是不必要的...想象一下这段代码中已经包含数据的向量。
您的数据可以被 realloc()
移动。所以如果有任何指向数据的指针,在调用之后,这些指针将失效。