【发布时间】:2015-12-15 18:00:19
【问题描述】:
我的问题类似于this。 想象一下这个结构:
typedef struct {
char *chromosome,*sequence;
int start,end;
} localisation_t;
我想为这个结构的一个数组(5 个元素)分配内存。我会尝试类似的东西: (语法肯定是错误的,因为你可以假设我不会流利地使用 C 语言)。
localisation_t *locs = (localisation_t*) calloc(5, sizeof(localisation_t));
strArray[0] = (localisation_t* ) malloc(sizeof(localisation_t));
我经常看到结构成员也可以分配内存。我不明白为什么,因为您已经为 struct 分配了内存?!但是好吧,你不知道它会包含什么。 (here 在名称变量成员上带有 strdup 的示例)。 为 struct 的成员分配内存(主要是 char * 类型)是一种好习惯吗?
如果我不这样做会怎样?这是一个好习惯吗?
【问题讨论】:
-
你的问题没有多大意义。
strArray到底是什么? -
@Joachim Pileborg:即使您使用 c++ 编译器?我在某处读到它在 C++ 中是必要的。
-
@ZheFrench :如果您使用 C++ 编译器编译,则需要强制转换。
-
@ZheFrench:是的,C++ 要求你转换
malloc的结果(C++ 不允许void *和其他指针类型之间的隐式转换)。但是,如果您正在编写 C++,则应该使用new运算符而不是malloc(如果可以,您应该使用处理所有内存管理的标准容器类型,如vector或map给你)。
标签: c struct allocation