[英]Limitations of malloc / realloc to char **?
说我有一个char **“ bob”,我以以下形式分配
char **bob = malloc(10 * sizeof(bob[0]));
并说,对于我在bob下存储的每个元素,我都会以以下形式分配一定的空间:
bob[num] = malloc(10);
我的问题是,您能否仅将bob下的元素分配给您分配给char **本身的数量?
即,如果bob[num] = malloc(10);
重复5次,我们总共分配了50个字节-由于超出了原来的10 * sizeof(bob[0])
(malloc分配了40个字节),这是否会使程序搞砸了?
还是您为char **下的元素分配的内存量不受分配给char **本身的内存的限制?
还是您为char **下的元素分配的内存量不受分配给char **本身的内存的限制?
是的,就是这种情况。 当为char**
分配内存时,您将为10个char*
腾出空间。 然后,当您分配这些char*
,它们最终指向完全独立的新内存块,与它们本身存储的块无关。
您正在创建基于指针的查找表。 不要混淆二维数组。
第一个malloc分配一个指针数组,即实际表,该指针表与所指向的数据没有任何关系。 内存布局将如下所示:
bob[0] -> some segment of memory
bob[1] -> some other segment of memory
...
不同段的大小也可以完全独立,彼此无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.