char str[10]
とchar *str = (char *) malloc(10)
の違いは何ですか?私が理解しているように、どちらもchar
の配列に対して10バイトを割り当てるわけではありませんか?これら2つのメモリ割り当ての違いは何ですか?
-2
A
答えて
1
char str[10];
グローバル(静的)スコープ - 初期化に応じて(.data
又は.bss
セグメントに割り当てられたプログラムの終了前に解放できません
ローカル(自動)スコープ。 - 通常(ほとんどの実装で、Cの標準ではスタックに割り当てられたものは無視されません)、プログラムがスコープを離れるときに自動的に解放されます
ヒープに割り当て2.
char *str = malloc(10);
。 free
関数を使用してプログラムから解放する必要があります
-1
char str[10]
スタックにメモリを割り当てます。 char *str = (char *) malloc(10)
ヒープにメモリを割り当てます。コンピュータのRAMに格納されているスタックとヒープ。 More information about stack and heap。
+0
間違っています: 'スタックは静的メモリ割り当てに使用されています' –
関連する問題
- 1. これらの2つの割り当ての違いは何ですか?
- 2. Typescriptのこれらの2つの配列割り当ての違いは何ですか?
- 3. メモリ割り当ての違い
- 4. 新規とアロケータによるメモリ割り当ての違いは何ですか
- 5. DOMContentLoadedとwindow.onload。これら2つの本当の違いは何ですか?
- 6. MFCの "メモリ割り当て違反"
- 7. HashMap要素にメモリが割り当てられるのはいつですか?
- 8. これらの2つのインポートステートメントの違いは何ですか?
- 9. これらの2つのコードの違いは何ですか?
- 10. これらの2つのCSSの違いは何ですか?
- 11. これらの2つのクエリの違いは何ですか
- 12. これらの2つのコードセグメントの違いは何ですか。
- 13. これらの2つのコードの違いは何ですか?
- 14. これらの2つのインポートステートメントの違いは何ですか?
- 15. これらの2つのバインディングの違いは何ですか?
- 16. 割り当てられたメモリのビュー
- 17. これら2つのJavaコードの違いは何ですか?
- 18. これら2つの宣言の違いは何ですか?
- 19. これらの2つの違いは何ですか?
- 20. これら2つのJava arrayList.add(の違いは何ですか)
- 21. これら2つのループの違いは何ですか?
- 22. これら2つのステートメントの違いは何ですか?
- 23. これら2つのクラスの違いは何ですか?
- 24. これら2つの.htaccessコードの違いは何ですか?
- 25. これら2つの配列の違いは何ですか?
- 26. これら2つのステートメントの違いは何ですか?
- 27. これら2つの定義の違いは何ですか
- 28. これら2つのJOINの違いは何ですか?
- 29. これら2つのSQLスクリプトの違いは何ですか?
- 30. これら2つのボタンの違いは何ですか?
'char str [10]'が関数の外部で使用されている場合、それはグローバル変数です。メモリはコンパイラによって割り当てられ、(おそらく)バイナリの一部になります(初期化されると)。 'char str [10]'が関数内で使用されている場合、その関数が入力されるたびに(返されると解放される)_stack_に割り当てられます。 'char * str =(char *)malloc(10)'は_heap_のメモリを割り当てます。あなたはそれを解放する( 'free()'を使って)あなたは責任があります。それ以外の場合は、別のアドレスで 'str'を割り当て直すと、リークと呼ばれます(つまり、割り当てられたメモリはプログラムが終了するまで"失われます ")。 – Scheff
Cブックでそれを見つけられなかった場合は、それを投げ捨てて良いものを購入してください... ;-) – Scheff