gpt4 book ai didi

realloc 结构 vector 后无法访问数据

转载 作者:行者123 更新时间:2023-11-30 15:22:38 24 4
gpt4 key购买 nike

我正在使用realloc来减小 vector 的大小。我只想放弃最后一个位置。因此,如果我有 10 个位置,并且使用 realloc9 * sizeof(my_struct) 分配足够的空间, vector 将被截断并保留旧数据,但保留最后一个位置?我认为这是正确的,但是当我尝试在 realloc 之后打印值时,我收到 Segmentation Failure 错误。这是我的代码:

    //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 检查 vector 内的元素,我会得到Segmentaition Failure

OBS:在重新分配之前,Vector 已被数据填满。我没有在这里发帖,因为我认为这是不必要的......想象一下 vector 已经包含此代码中的数据。

最佳答案

您的数据可以通过realloc()移动。所以如果有任何指向数据的指针,在调用之后,这些指针就会失效。

关于realloc 结构 vector 后无法访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com