【问题标题】:declare integer pointer on stack and assign value versus on heap在堆栈上声明整数指针并在堆上分配值
【发布时间】:2020-12-19 01:15:01
【问题描述】:

使用堆我有以下内容:

int *cnt = malloc(sizeof(int));
cnt[0] = 5;
*cnt = 0;

我为 1 个 int 声明一个指针和 malloc 空间 我可以通过 cnt[0] = 5 或 *cnt = 0 来赋值。在这个例子中,第二个赋值覆盖了第一个

如何使用堆栈来做到这一点?

int *cnt = NULL;
 

这是否会从堆栈中分配任何内存?如何为 cnt 赋值? (即整数,不是地址)

【问题讨论】:

    标签: c stack heap-memory


    【解决方案1】:

    如果您使用堆栈,则实际上并不需要指针。你可以这样做:

    int cnt[1];
    cnt[0] = 5;
    *cnt = 0;
    

    第一个分配被第二个覆盖,并且可能会被优化掉。

    如果你真的想要一个指针变量,你可以这样做:

    int cnt_var;
    int *cnt = &cnt_var;
    cnt[0] = 5;
    *cnt = 0;
    

    这需要更多的堆栈空间,因为它同时分配了int 变量和int * 指针。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2012-09-16
      相关资源
      最近更新 更多