Zi 字媒體
2017-07-25T20:27:27+00:00
一把梭系列 ~ C語言範例 (0019) [指標與動態配置記憶體 – malloc、free]
資料來源: https://openhome.cc/Gossip/CGossip/MallocFree.html
https://www.cplusplus.com/reference/cstdlib/malloc/
https://www.cplusplus.com/reference/cstdlib/free/
線上執行: https://www.tutorialspoint.com/compile_c_online.php
★前言:
★主題:
C/C++一般陣列的大小必須在宣告時就明確告知,但有些程式情況卻無滿足該條件
01.動態配置記憶體
void* malloc (size_t size);
void* malloc (size_t size);
02.釋放動態配置記憶體
void free (void* ptr);
★code
#include /* printf, scanf, NULL */
#include /* malloc, free, rand */
#include /* time */
int main ()
{
int i,n;
char *buffer='\0';
printf ("How long do you want the string? ");
scanf ("%d", &i);
buffer = (char *) malloc (sizeof(char)*(i+1));
if (buffer=='\0') exit (1);
srand (time(NULL));//初始亂數種子
for (n=0; n
★結果:
★延伸說明/重點回顧:
01.C/C++一般陣列的大小必須在宣告時就明確告知,但有些程式情況卻無滿足該條件,此時就是要使用動態配置來解決。
02.『動態配置記憶』雖然很方便,但是這也是一把雙面刃,如果沒有對稱(成對)的使用『釋放動態配置記憶』就會造成『記憶體洩漏』的問題,如果情況嚴重可能會造成程式錯誤,必須非常小心使用。
寫了
5860316篇文章,獲得
23313次喜歡