重新分配结构向量后无法访问数据

Cant access data after realloc struct vector

我正在使用 realloc 来减小矢量的大小。我只想松开最后一个位置。所以,如果我有 10 个位置,并且我使用 realloc9 * 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()移动。所以如果有任何指向数据的指针,在调用之后,这些指针将失效。