在c語言中,realloc()函式可以改變已分配記憶體區的大小。但是在c++中並不提供類似功能的函式。
如果你需要,你當然可以使用realloc()。但是,realloc()僅僅保證能工作於這樣的陣列之上:它們被malloc()(或者類似的函式)分配,包含一些沒有使用者定義的複製建構函式(copy constructors)的物件。而且,要記住,與通常的期望相反,realloc()有時也必須複製它的引數陣列。
在c++
中,處理記憶體重新分配的更好的方法是,使用標準庫中的容器,例如
vector
,並讓它自我增長。
c++裡沒有realloc不是遺憾,而是精心選擇和淘汰的結果。 在c裡,realloc的實現(在增加空間的時候)一般而言是重新分配一塊空間, (這是由堆分配的策略決定的), 然後把舊空間的內容copy到新空間裡去。而物件空間怎麼copy? 是copy位元組還是用copy constructor? 無論哪個都不合適。
那種想在原地(即首位址不動)就把申請記憶體空間擴大的思想不是乙個好思想。
所以不要過多糾結於如何在內建陣列或指標基礎上找類似於realloc()函式改變已分配記憶體區大小的函式了。
#include
using namespace std;
int main()
copy(oldbuf,oldbuf+5,newbuf);
delete oldbuf;
for(i=5;i<10;i++)
for(i=0;i<10;i++)
return 0;
}
C 中indexof和substring函式用法
c 中indexof和substring函式用法 abcdefg substring 4,2 返回的值為 ef 從字串 abcdefg 中第4位開始取,取到第2位。abcdefg substring 4 返回 efg 從字串 abcdefg 中第4位開始取,取到字串的尾部 code 處理鏈結 add...
C 中indexof和substring函式用法
一 substring用法 abcdefg substring 4,2 返回的值為 ef 從字串 abcdefg 中第4位開始取,取到第2位。abcdefg substring 4 返回 efg 從字串 abcdefg 中第4位開始取,取到字串的尾部 二 indexof lastindexof用法 ...
在C 中動態呼叫native dll的匯出函式
在 c 中我們能夠通過 loadlibrary,getprocaddress 來動態呼叫 dll 的匯出函式.在 c 中也能夠用這樣的方式嗎?在 dotnet 2.0 裡面這樣是可以的,這完全得益於 2.0新增的乙個函式 marshal.getdelegateforfunctionpointer 方...