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);
}
答案 0 :(得分:1)
是的,他们是。 obj
的内存是静态分配的(在堆栈上),而var
的内存是动态的(在堆上)。主要的实际区别是,静态分配的对象在块的末尾被销毁,但是您必须手动释放内存以用于动态分配的对象(以防止内存泄漏)。
您可以在here找到有关此主题的更多信息。