2017-10-20 32 views
0

StructタグとPointer to Structの違いは何ですか?同じだ?またはここに私の例は、objと* varは2つの異なるメモリの場所ですか?structタグと構造体へのポインタは同じですか?

#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); 
} 
+2

[静的メモリ割り当てと動的メモリ割り当ての違い](https://stackoverflow.com/questions/8385322/difference-between-static-memory-allocation-and-dynamic-memory-allocation) –

答えて

1

はい、あります。 objのメモリは静的(スタック上)に割り当てられ、var(ヒープ上)では動的に割り当てられます。実際の主な違いは、ブロックの最後に静的に割り当てられたオブジェクトが破棄されることですが、メモリリークを防ぐために、動的に割り当てられたオブジェクトを手動で解放する必要があることです。

このトピックに関する詳細は、hereを参照してください。

関連する問題