静的割当てと動的割当て
メモリの静的割り当てと動的割り当ての違いは、主に2つです.1つは時間の違いです.静的割当ては、プログラムのコンパイルと接続時に発生します.動的割り当ては、プログラムの呼び出しと実行時に発生します.
1、予め記憶スペースを割り当てる必要がない;2、割り当てられたスペースは、プログラムの必要に応じて拡大または縮小することができる.プログラムの必要に応じて記憶領域を動的に割り当てるには、malloc関数を使用する必要があります.malloc関数の原型は、void*malloc(unsigned int size)です.メモリの動的記憶領域にsizeの長さの連続空間を割り当てる役割を果たします.そのパラメータは符号なし整形数であり、戻り値は、割り当てられた連続ストレージドメインの開始アドレスを指すポインタである.もう1つ注意しなければならないのは、関数がメモリ不足などのストレージ領域の割り当てに成功しないと、NULLポインタが返されることです.したがって、関数を呼び出すときは、戻り値がNULLであるかどうかを検出し、対応する操作を実行する必要があります.静的メモリは、プログラムが実行されるとメモリが割り当てられ、プログラムが終了するまでメモリが解放されます.ダイナミックメモリは、プログラム呼び出しがプログラムで定義された関数を呼び出すときに割り当てられ、関数呼び出しが終了するとダイナミックメモリが解放されます.
。 , 。 2 : 。 , 。 malloc 。 , , 。
, 3 : , 。
“ ”。“ (stack)” “ (heap)” , , 。 “ ”, , 。 “ ” “ ” 。 , , 。 。
, static , 。 , ,EBP 。
。 , , 。
float :
float score[100];
, , : ? , , , , 。 , 。 , , , 。 。 , : , , , , 。
. 。 , , 。 、 :
1、予め記憶スペースを割り当てる必要がない;2、割り当てられたスペースは、プログラムの必要に応じて拡大または縮小することができる.プログラムの必要に応じて記憶領域を動的に割り当てるには、malloc関数を使用する必要があります.malloc関数の原型は、void*malloc(unsigned int size)です.メモリの動的記憶領域にsizeの長さの連続空間を割り当てる役割を果たします.そのパラメータは符号なし整形数であり、戻り値は、割り当てられた連続ストレージドメインの開始アドレスを指すポインタである.もう1つ注意しなければならないのは、関数がメモリ不足などのストレージ領域の割り当てに成功しないと、NULLポインタが返されることです.したがって、関数を呼び出すときは、戻り値がNULLであるかどうかを検出し、対応する操作を実行する必要があります.静的メモリは、プログラムが実行されるとメモリが割り当てられ、プログラムが終了するまでメモリが解放されます.ダイナミックメモリは、プログラム呼び出しがプログラムで定義された関数を呼び出すときに割り当てられ、関数呼び出しが終了するとダイナミックメモリが解放されます.