繁体   English   中英

malloc / realloc对char **的限制?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM