【发布时间】:2016-04-11 06:29:44
【问题描述】:
我正在尝试使用 malloc() 函数使用下面定义的 ADT 创建一个整数数组。我希望它返回一个指向新分配的 intarr_t 类型的整数数组的指针。如果它不起作用 - 我希望它返回一个空指针。
这是我目前所拥有的 -
//The ADT structure
typedef struct {
int* data;
unsigned int len;
} intarr_t;
//the function
intarr_t* intarr_create( unsigned int len ){
intarr_t* ia = malloc(sizeof(intarr_t)*len);
if (ia == 0 )
{
printf( "Warning: failed to allocate memory for an image structure\n" );
return 0;
}
return ia;
}
我们系统的测试给了我这个错误
intarr_create(): null pointer in the structure's data field
stderr
(empty)
我到底哪里出错了?
【问题讨论】:
-
我认为目的是为结构中的member
data动态分配内存。 -
您正在为一堆
intarr_t元素分配空间......但是为每个元素中的int * data字段分配空间呢????那么初始化每个元素的所有字段呢??? -
我该怎么做呢?我对使用这样的 malloc 和 typedef 还不是很熟悉。 =/
-
分配 one
intarr_t结构,然后为data成员初始化len整数。我把它作为一个练习留给你,你应该将len结构成员初始化为。
标签: c pointers abstract-data-type