c - malloc/realloc 对 char ** 的限制?

标签 c arrays pointers memory-management

假设我有一个 char** "bob",我以以下形式 malloc

char **bob = malloc(10 * sizeof(bob[0]));

然后说对于我存储在 bob 下的每个元素,我以

的形式分配一定数量的空间
bob[num] = malloc(10);

我的问题是,您能否仅对 bob 下的元素进行 malloc,直到您对 char** 本身进行 malloc 的数量?

即如果 bob[num] = malloc(10); 重复 5 次,我们总共分配了 50 个字节 - 因为这超过了原来的 10 * sizeof(bob[0]) (which mallocs 40),这会导致程序搞砸吗?

或者您分配给 char** 下的元素的内存量是否不受分配给 char** 本身的内存的限制?

最佳答案

您正在创建一个基于指针的查找表。不要将其与二维数组混淆。

第一个 malloc 分配了一个指针数组,即实际的表,它与指向的数据没有任何关系。内存布局将是这样的:

bob[0] -> some segment of memory
bob[1] -> some other segment of memory
...

不同段的大小也可以完全独立,彼此无关。

关于c - malloc/realloc 对 char ** 的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164185/

相关文章:

c++ - 链表,removeFirst() 不工作

可以将地址分配给C中的变量吗?

C++ 指向类实例的指针

C:函数依赖分析

javascript - 使数组上的值匹配更快?

c - 如何制作未装箱的 float 组,我可以获取 Ptr

c# - 如何在 C++ 中构建动态数组并将其返回给 C#/.NET

数组的C指针算法

c - 为什么 _Generic 语句被视为表达式而不是宏?

c - 与 STM32f1xx 的 USART 通信