在realloc struct vector之后无法访问数据

时间:2015-03-20 00:00:32

标签: c vector struct realloc

我正在使用realloc来减少矢量的大小。我只想放弃最后一个位置。所以,如果我有10个位置,并且我使用realloc9 * 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已经填满了数据。我没有在这里发帖,因为我认为这是不必要的......想象一下这个代码中已有数据的载体。

1 个答案:

答案 0 :(得分:1)

您的数据可以realloc() 移动。因此,如果有任何指向数据的指针,则在调用之后,这些指针将变为无效。

相关问题