这个问题是在面试的笔试中被问到的:
#include<alloc.h>
#define MAXROW 3
#define MAXCOL 4
main()
{
int (*p)[MAXCOL];
p = (int (*)[MAXCOL]) malloc(MAXROW*(sizeof(*p)));
}
进程中分配了多少字节?
说实话,我没有回答这个问题。我不明白分配给p
.
谁能解释一下答案是什么以及如何推导出来?
它依赖于平台。
int (*p)[MAXCOL];
声明一个指向 MAXCOL 元素宽的整数数组的指针(在本例中 MAXCOL 当然是 4)。因此,该指针的一个元素是4*sizeof(int)
在目标平台上。
The malloc
语句分配的内存缓冲区为 P 中包含的类型大小的 MAXROW 倍。因此,总共分配了 MAXROW*MAXCOL 整数。实际字节数取决于目标平台。
另外,C 运行时可能使用额外的内存(作为 malloc 中的内部簿记,以及之前发生的各种进程初始化位)main
被称为),这也完全依赖于平台。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)