我有一个指针数组
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/