结构标记和结构指针是否相同?

时间:2017-10-20 18:20:18

标签: c pointers struct

Struct标签和指向Struct的指针有什么区别?是相同的?或者这是我的例子,是obj和* var两个不同的内存位置吗?

#include <stdio.h>
#include <stdlib.h>

struct alloc {

    char data;
};

int main(int argc, char** argv) {

    struct alloc obj;
    struct alloc *var = calloc(5,sizeof(struct alloc));
    (var -> data) = 'P';
    printf("Data:%d",obj.data);

    return (EXIT_SUCCESS);
}

1 个答案:

答案 0 :(得分:1)

是的,他们是。 obj的内存是静态分配的(在堆栈上),而var的内存是动态的(在堆上)。主要的实际区别是,静态分配的对象在块的末尾被销毁,但是您必须手动释放内存以用于动态分配的对象(以防止内存泄漏)。

您可以在here找到有关此主题的更多信息。