c realloc 函式解析

2021-09-03 03:12:04 字數 829 閱讀 3314

realloc(void *__ptr, size_t __size):更改已經配置的記憶體空間,即更改由malloc()函式分配的記憶體空間的大小。

如果將分配的記憶體減少,realloc僅僅是改變索引的資訊。

如果是將分配的記憶體擴大,則有以下情況:

1)如果當前記憶體段後面有需要的記憶體空間,則直接擴充套件這段記憶體空間,realloc()將返回原指標。

2)如果當前記憶體段後面的空閒位元組不夠,那麼就使用堆中的第乙個能夠滿足這一要求的記憶體塊,將目前的資料複製到新的位置,並將原來的資料塊釋放掉,返回新的記憶體塊位置。

3)如果申請失敗,將返回null,此時,原來的指標仍然有效。

注意:如果呼叫成功,不管當前記憶體段後面的空閒空間是否滿足要求,都會釋放掉原來的指標,重新返回乙個指標,雖然返回的指標有可能和原來的指標一樣,即不能再次釋放掉原來的指標。

看一下示例**

#include"stdio.h"

#include"malloc.h"

int main()

如果當前記憶體段後有足夠的空間,realloc()返回原來的指標:

分配新記憶體之前:4815344

再分配新的記憶體:

99分配新記憶體之後:4815344

--------------------------------

如果當前記憶體段後沒有足夠的空間,realloc()返回乙個新的記憶體段的指標:

分配新記憶體之前:3308016

再分配新的記憶體:

1000

分配新記憶體之後:7763488

--------------------------------

linux wait函式解析

程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序,wait 就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wait就會一直阻塞在這裡,直到有乙個出現為止。wait 等待子程序中斷或結束...

matlab cov 函式解析

最近在用matlab 一直搞不懂cov 函式怎麼算出來了。從網上查了一下,結合一些程式例子總結如下 x 6 9 3 4 5 4 2 1 6 7 7 8 7 8 9 10 cov x ans 0.6667 1.3333 2.3333 3.0000 1.3333 4.6667 3.0000 5.0000...

strcpy函式解析

題目 已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 1.不呼叫庫函式,實現strcpy函式。2.解釋為什麼要返回char 解說 1.strcpy的實現 char strcpy char strdest,const char str...