Python編程:python-attrs模塊的簡單使用
959
2022-05-30
C語言中內存開辟
可以從文檔里看出,該函數參數是一個要開辟的字節數。
具體怎么操作呢:
它說的是什么意思呢? 簡單地說就是,該函數可以將內存塊移動到新的位置,在這種情況下,將返回新的位置。即使塊被移動,內存塊的內容也會保留到新舊大小中較小的大小。如果新大小較大,則新分配的部分的值不確定。在ptr為空的情況下,該函數的行為與malloc完全相同,它分配一個新的大小字節塊,并返回一個NULL。
ptr:指向先前用malloc、calloc或realloc分配的內存塊的指針,以便重新分配。 size: 指內存塊的新大小(以字節為單位)。如果它是0, ptr指向一個現有的內存塊,那么ptr指向的內存塊將被回收,并返回一個空指針。
該函數的功能是: 為num元素數組分配一個內存塊,每個元素的大小都是字節長,并將其所有的 位 初始化為0。
三種內存開辟具體實例
三種內存開辟方式比較和總結
malloc 、realloc、calloc三個函數都是用來動態開辟內存的,并且開辟的都是一段連續的內存。
malloc和realloc:realloc主要是用于修改一個原先已經分配好的內存塊的大小;而malloc主要是用來開辟一個以字節為單位的新的內存塊。
如果realloc是用來擴大或者縮小一個內存塊: ●擴大內存塊:那么這塊內存原來的內容依然保留,新增的內存添加到原內存快的后面,新增加的空間并沒有進行初始化,只是增加了大小; ●縮小內存:該內存塊尾部部分的內存會被拿掉,剩余部分依舊保留; ●如果該內存塊無法改變大小, realloc 就會重新分配一塊正確的內存,并把原來內存的內容復制到新的內存塊上。因此,在使用realloc之后,就不能再使用指向舊空間的指針,而是使用realloc返回的新指針
calloc和malloc 主要是前者在返回指向內存的指針之前把它初始化為 0。并且calloc參數包括所需元素的數量和每個元素的字節數。根據這些值來計算總共需要分配多少內存。
使用完之后必須要用 free 釋放空間,否則會造成內存泄漏。
內存泄漏(非常重要)
當動態分配的內存不再需要使用時,這塊內存就應該被釋放,這樣可以被重新分配使用。分配但不在使用完成之后釋放內存會造成內存泄漏。 內存泄漏最終將會一點一點的榨干內存,最后只能重啟。萬一實在一個大型的服務器,那后果難以想象,對于一個程序猿來說大概就差不多可以收拾東西滾蛋了,啊哈哈哈哈。
常見的動態內存錯誤
對NULL的解引用
對分配的內存進行操作時越過邊界
釋放非動態分配的內存
試圖釋放一塊動態分配的內存的一部分以及一塊動態內存被釋放之后繼續使用。
malloc 和 free沒有配套使用
對動態開辟的內存重復釋放
本文轉載自異步社區。
其他
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。