假设我有一个 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/