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

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

30得票3回答
realloc函数在处理内存不足时的处理方式是如何的?

如果原始位置没有足够的内存可用: 它会分配多个内存块,并返回指向其中一个块的指针,所有块在内部相互链接吗? 原始区域会被复制到一个有足够内存可用的新位置吗? 会返回指向新地址的指针,同时释放旧位置的内存吗? realloc是否与编译器/操作系统相关?

11得票2回答
C编程 - realloc应该使用多频繁?

我有一个关于动态内存分配的问题。 背景信息:我正在编写一个程序,读取一个单词的文本文件并计算每个单词出现的频率(每行一个单词)。 这个特定的函数会读取文件,计算行数和字符数,然后动态分配内存给字符串指针数组、存储每行字符数的数组以及字符串本身。(其他部分与我的问题没有直接相关性。) 问题...

9得票7回答
realloc函数在不释放旧内存的情况下重新分配内存

我希望使用realloc来增加内存大小,同时保持指针不变(因为调用者在使用它)。然而,realloc并不总是这样做;有时会返回一个不同的指针并释放旧的指针。我想要“尝试”realloc内存,如果不可能,就回退到使用原始指针的不同方法 - 但是realloc已经摧毁了那个指针! 是否有一种方法...

8得票3回答
如何在C语言中正确地重新分配二维数组?

我正在尝试从输入中加载两个双精度浮点数到一个二维数组中,该数组会因用户输入而动态重新分配空间。 #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int co...

8得票3回答
标准C库中为什么没有像realloc()那样不需要复制数据的函数?

例如,我想要这样一个函数: char *dst = (char*)malloc(512); char *src = (char*)malloc(1024); ... dst = (char*)realloc(dst, 1024); memcpy(dst, src, 1024); 正如您所...

20得票5回答
当realloc移动内存块时如何更新其他指针?

realloc函数可能会将内存块移动到新的位置,此时返回新的位置。那么这是否意味着如果我这样做:void foo() { void* ptr = malloc( 1024 ); unsigned char* cptr = ( unsigned char* )...

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

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

8得票3回答
realloc但只有前几个字节有意义

假设我已经使用ptr = malloc(old_size);来分配一个有old_size字节的内存块。只有前header_size字节是有意义的。现在我将增加尺寸到new_size。 new_size大于old_size,而old_size大于header_size。 之前: /- - ...

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

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