40得票2回答
我们在realloc缓冲区后会丢失数据吗?

我对realloc的工作原理感到困惑。如果我使用malloc分配了一块缓冲区,并将数据复制到该缓冲区,比如说"AB": +------------+ | A | B | \0 | +------------+ 我使用realloc重新分配了缓冲区,是否会导致数据丢失(即使只有一个字节)?或...

16得票4回答
realloc使用起来安全吗?

之前我的一个朋友告诉我不要使用 realloc ,因为它是不安全的,但他不能告诉我原因,所以我对这个问题进行了一些研究,最接近我的怀疑的参考资料是: 第一篇文章 第二篇文章 我想知道是否可以在我的代码中继续使用 realloc ,如果它不安全,是否有其他方法来重新分配内存?

38得票9回答
用new分配的内存,重新分配时是否安全?

根据这里所写,new 在 free store 中分配内存而 malloc 使用 heap,这两个术语通常指的是相同的东西。 根据这里所写,realloc 可能会将内存块移动到新位置。如果 free store 和 heap 是两个不同的内存空间,那么会有问题吗? 具体而言,我想知道是否可...

14得票7回答
修剪时,realloc会失败(返回NULL)吗?

如果按照以下步骤进行:int* array = malloc(10 * sizeof(int)); 然后我使用realloc:array = realloc(array, 5 * sizeof(int)); 在第二行(且仅在第二行),它能返回NULL吗?

47得票3回答
对于空值(或未定义)指针的realloc操作

我在阅读关于realloc的内容时,对其中提到的一个点感到困惑。考虑下面的代码:#include <stdio.h> #include <stdlib.h> int main () { int* ptr = NULL; ptr = realloc(p...

59得票3回答
std::vector在增加容量时是否必须移动对象?或者,分配器是否可以“重新分配”?

一个不同的问题启发了以下想法: 当 std::vector<T> 增加其容量时,是否必须移动所有元素? 据我所知,标准行为是底层分配器请求一个新大小的整个块,然后将所有旧元素移动过去,然后销毁旧元素,最后释放旧内存。 在标准分配器界面给出的情况下,这种行为似乎是唯一可能的正确...

12得票6回答
使用realloc(X, 0)替代free(),并使用字符串长度+1来调用malloc函数

这次我不太知道该怎么起标题。首先,我想说我在本页面上看到了一些关于如果问题与"作业"有关就需要警告的评论。我的问题确实是关于作业的,但已经完成了,我只是想更好地理解代码运行原理。 我已经阅读了一些帖子和书籍,但我认为我仍然缺少一些东西。 我在我写的代码中有2行代码不是很理解。这个作业是关于...

8得票2回答
动态数组:使用realloc()避免内存泄漏

我使用realloc函数来重新调整内存空间大小: char **get_channel_name(void) { char **result; int n; result = (char **) 0; for (elem = snd_mixer_fir...

8得票2回答
可以使用realloc安全地重新分配平凡可复制对象的存储空间吗?

我知道平凡可复制对象可以安全地通过malloc复制到适当的存储位置1,目标对象将与源对象具有相同的值。 使用realloc是否也可能呢?也就是说,如果realloc一些包含类型T的对象的存储空间,并且realloc决定移动和复制该块,那么新分配的存储空间中的对象是否完好无损并已开始其生命周期...

21得票7回答
对齐内存管理?

我有几个关于管理对齐内存块的问题,希望能得到跨平台的答案。但是,由于我相信跨平台的解决方案并不存在,所以我主要关心Windows和Linux,Mac OS和FreeBSD则次之。 如何最好地获得一个在16字节边界上对齐的内存块?(我知道使用malloc()的简单方法,分配一些额外的空间,然...