prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 7.19b

我正在动态分配一个数组,像这样

	int *iarray = (int *)malloc(nints);
malloc没有返回 NULL,但代码不起作用。


malloc是一个低级的、无类型的分配器。它不知道你将如何使用内存;它所做的只是根据你要求的字节数分配内存。因此(当你分配由...组成的数组时除外)char)你必须乘以你正在分配的数组中元素的类型大小。

	int *iarray = malloc(nints * sizeof(int));
	int *iarray = malloc(nints * sizeof(*iarray));
(后一种片段如果...的类型iarray可能会改变,因为它只有一个地方可以改变。另外,也已删除了类型转换;请参阅问题 7.7。)比较问题 4.4,还可以参阅问题 7.8


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管