C++中的realloc和malloc都是用于動(dòng)態(tài)內(nèi)存分配的函數(shù),但它們之間有一些區(qū)別:
malloc函數(shù)只能用于分配內(nèi)存,而realloc函數(shù)既可以用于分配內(nèi)存,又可以用于重新分配已分配的內(nèi)存。
malloc函數(shù)只能分配指定大小的內(nèi)存塊,而realloc函數(shù)可以調(diào)整已分配內(nèi)存塊的大小。如果realloc函數(shù)的第一個(gè)參數(shù)是一個(gè)已分配的內(nèi)存塊的指針,并且第二個(gè)參數(shù)指定的大小大于原內(nèi)存塊的大小,那么realloc函數(shù)將會(huì)分配一個(gè)新的大小為指定大小的內(nèi)存塊,并將原內(nèi)存塊的內(nèi)容復(fù)制到新內(nèi)存塊中。如果第二個(gè)參數(shù)小于或等于原內(nèi)存塊的大小,那么realloc函數(shù)將會(huì)調(diào)整原內(nèi)存塊的大小。
realloc函數(shù)在調(diào)整內(nèi)存塊大小時(shí)可能會(huì)導(dǎo)致內(nèi)存塊的移動(dòng),而malloc函數(shù)不會(huì)發(fā)生這種情況。這意味著使用realloc函數(shù)可能會(huì)比malloc函數(shù)更耗時(shí)。
總的來(lái)說(shuō),如果需要重新分配已分配內(nèi)存的大小,應(yīng)該使用realloc函數(shù);如果只需分配新的內(nèi)存塊,可以使用malloc函數(shù)。