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...