【发布时间】:2017-01-07 00:43:51
【问题描述】:
我有一个这样的结构:
typedef struct {
int hi;
} my_struct;
使用这个有没有优势:
my_struct *test = malloc(sizeof(my_struct));
test->hi = 1;
而不是这个:
my_struct test;
test.hi = 1;
【问题讨论】:
-
这取决于你在做什么。只看这两个sn-ps的代码,其实并没有什么区别(除了第一种动态分配的情况,别忘了
free内存)。 -
两者都会为你的结构分配内存,但 malloc() 将从堆中分配,
mystruct test将在堆栈上分配 -
当您希望您的程序实际产生某些东西而不是让它自己进行私有计算(智能编译器将优化为无操作)时,它们很有用。 ;-)
标签: c pointers struct dynamic-memory-allocation