c - 如何在数组中间重新分配()?

标签 c malloc realloc

我有一个指针数组

    char *wordlist[9];

然后我在每个指针上 malloc() 一个内存块

for(int i=0; i<9; i++)
    wordList[i] = (char*)malloc(someLength);

假设每次 someLength 都不同。

现在的问题是,我想 realloc() 即。 wordList 的第 4 个元素比现在更大。

wordList[3] = (char*) realloc(&wordList[3], someBiggerSize);

由于 malloc 分配了一致的内存块,是否可以在不与 wordList[4] 发生冲突的情况下执行该操作?

最佳答案

原则上没有什么可担心的。您只有一个指针数组,数组的每个元素都指向一个不同的内存块。因此,数组的每个元素、每个指针都可以独立于其他元素重新分配。

现在,我说原则上是因为你的代码确实有错误。您应该将 wordList[3] 而不是 &wordList[3] 传递给 realloc

关于c - 如何在数组中间重新分配()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9070551/

相关文章:

c++ - 您查找段错误原因的方法是什么?

c - 如果你处理它并且不调用DefWindowProc(),WM_SETCURSOR会被发送到父级吗?

c++ - 修改 2D Array 的 malloc 策略,使 malloc 成功

c - realloc 但只有前几个字节是有意义的

c++ - C++ 中的类 C 程序?

c - makefile 中无法识别规则?

c - 为什么 malloc 分配的内存空间比我要求的多?

c - 在 C 中实现隔离内存存储 (malloc)

c - 加倍动态堆栈数组

c - 使用 DMA 打印给定值