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

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

7得票3回答
调用realloc后,我需要初始化(设置为0)内存吗?

我需要实现一个简单的动态指向 typedef 类型的指针数组。 每当用户请求时,使用 realloc,数组大小会增加 sizeof(pointer)。 所以我目前的代码如下: #include <stdio.h> #include <string.h> #includ...

12得票2回答
现代操作系统在调用realloc时是否真的会跳过复制过程?

阅读https://dev59.com/LHA75IYBdhLWcg3wo6pe#3190489时,我有一个问题。Qt 4容器内部的Inside the Qt 4 Containers中作者所说的是什么: ... QVector使用realloc()以4096字节的增量增长。这是有道理的,...

28得票6回答
realloc()的正确使用方法

根据realloc函数的说明:realloc()函数会返回一个指向新分配内存的指针,该内存适合于任何类型的变量,并且可能与ptr不同,如果请求失败,则返回NULL。 因此,在这段代码片段中:ptr = (int *) malloc(sizeof(int)); ptr1 = (int *) r...

13得票6回答
如果新的大小比原来小,能否使用realloc移动指针?

我想知道C或C++标准是否保证当realloc调用一个比原指针尺寸小的非零值时,指针不会被更改: size_t n=1000; T*ptr=(T*)malloc(n*sizeof(T)); //<--do something useful (that won't touch/reall...

34得票4回答
realloc在失败时是否会释放原来的缓冲区?

如果 realloc 失败并返回 NULL,先前的缓冲区是否被释放还是保持不变?我在 man 手册中没有找到这个特定信息,我很不确定该怎么做。如果内存已被释放,则双重释放可能会带来风险。如果没有释放,则会发生泄漏。

37得票5回答
为什么C++分配器中没有重新分配功能?

C 语言中的标准内存处理函数是 malloc()、realloc() 和 free()。然而,C++ 的 stdlib 分配器只并行支持其中两个函数:没有重新分配函数。当然,这并不可能完全像 realloc() 那样做,因为简单地复制内存对于非聚合类型来说是不适当的。但是,使用下面的函数会有问...

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

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

10得票3回答
当新的大小与旧的大小相同时,realloc的行为是什么?

我想使代码更加高效。我有类似于这样的代码: typedef struct{ ... }MAP; MAP* pPtr=NULL; MAP* pTemp=NULL; int iCount=0; while (!boolean){ ...

17得票2回答
为什么C标准中没有"recalloc"函数?

大家都知道: realloc 重新分配一个已经存在的内存块或者将它复制到更大的内存块。 calloc 确保内存被清零,避免算术溢出,并且通常用于大型数组。 C标准为什么不提供一个像下面这样同时结合了这两者的函数呢?void *recalloc(void *ptr, size_t num...