malloc动态内存分配
運用動態內存分配可以有效解決定義的數組或者結構體大小不夠用的情況,動態內存分配就是人為的向系統申請一個指定大小的空間用來存放臨時數據。在c語言中,一些可控或者說是一些小數據下,可以人為定義一些變量用來存放數據,在函數結束時釋放掉,看起來很方便,其實很受限制,在一些不可控或者是大數據下的情況,我們無法得知我們需要多大的容量來存放他們,我們可以舉個例子,一個電話簿中,一個聯系人就是一個結構體變量,用來存放一些信息,但是這個電話簿有多少聯系人呢?答案是若干個。我們不可能定義一個結構體數組來確定其容量,因為人數我們是不可控的,因此我們就引用了動態內存分配的概念,我們開始就初始化一個空間,可以存放比如就3個人吧,當要存放第4個人是就自動開辟一個指定大小的空間來存放聯系人的信息,用完就開辟。
這里就要引用到2個函數,malloc函數,free函數。
malloc函數用法
void* malloc(unsigned int size)其作用是向系統申請一個長度為size的連續空間,其返回值是所分配空間的第一個字節的地址,倘若開辟失敗就會返回一個空指針,所以在使用時要對其返回值進行判斷。
free函數用法
void free(void* p)有借就有還,其作用是用來釋放指針變量p所指向的動態空間,也就是歸還這部分空間給系統,該函數無返回值,其余malloc函數成對使用。
開辟了空間用完后就要釋放掉,用了malloc函數就要用free函數,倘若開辟了最后不釋放的話,會造成內存泄漏。接下來舉個例子:
最后再說一點,malloc這個函數很強,運用這個函數,幾行代碼就可以寫一個惡意程序讓你的電腦輕松崩潰,要是還加載到開機啟動項里那你就重裝系統吧,哈哈,小伙伴們可不要輕易嘗試哦,要試也在自己電腦上試,畢竟友誼的小船說翻就會翻哦。
總結
以上是生活随笔為你收集整理的malloc动态内存分配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10安装Anaconda和
- 下一篇: zoj 1088 System Over