【问题标题】:When to use pointers in C [duplicate]何时在 C 中使用指针 [重复]
【发布时间】: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


【解决方案1】:

不,通常情况正好相反。如果您可以使用该格式来满足您的要求

my_struct test;
test.hi = 1;

那么它总是更好,运行时开销更少。当您可以不使用它们时,使用内存分配器函数通常没有任何优势。

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2011-01-11
    相关资源
    最近更新 更多