在C++中,可以使用realloc
函數來重新分配動態分配的內存塊的大小。然而,realloc
函數只能用于之前使用malloc
、calloc
或realloc
函數分配的內存塊,而不能用于之前使用new
運算符分配的內存塊。
如果要在C++中結合使用realloc
和new
,可以采取以下方法:
malloc
和free
來分配和釋放內存,然后使用new
和delete
來創建和銷毀對象:int* ptr = (int*)malloc(sizeof(int));
*ptr = 10;
// 使用realloc重新分配內存大小
int* new_ptr = (int*)realloc(ptr, 2 * sizeof(int));
if (new_ptr != nullptr) {
ptr = new_ptr;
*(ptr + 1) = 20;
}
// 創建和銷毀對象
int* obj = new int(30);
delete obj;
// 釋放內存
free(ptr);
delete
釋放原內存塊:int* ptr = new int(10);
// 創建新的內存塊和對象
int* new_ptr = (int*)realloc(ptr, 2 * sizeof(int));
if (new_ptr != nullptr) {
ptr = new_ptr;
*(ptr + 1) = 20;
}
// 釋放原內存塊
delete ptr;
在實踐中,建議盡量避免混合使用realloc
和new
,以避免出現內存泄漏或未定義的行為。最好選擇一種方式來動態分配和釋放內存,以確保代碼的可讀性和可維護性。