[英]C++ - Dynamic memory allocation required memory
如果我想動態分配內存給一個int
對象,我可以這樣做:
int *x = new int;
在這種情況下,我知道堆為一個int
對象重新占用了4-bytes
的內存。
但是,如果我有一個user-defined
類(類型)並且想要動態分配內存,則如下:
Car *c = new Car;
我如何知道要在堆上保留Car
對象所需的內存量?
謝謝。
那將是sizeof(Car)
個字節。 編譯器將自動執行此操作,您無需執行任何特定操作。
請參見本文章有關如何一類對象的大小來確定的信息。 您可以使用以下程序以編程方式使用它:
size_t car_size = sizeof(Car);
您正在尋找sizeof()
。 請注意,由於內存填充和/或對齊,該值可能會比用戶定義類型的預期值大。
您要使用sizeof
運算符。 sizeof運算符以字節為單位返回類型的大小,並在編譯時進行評估。 這對於malloc
特別有用,因為malloc要求您指定需要分配多少個字節。 但是,您使用的是C ++, new
會自動為您執行此操作。
sizeof
運算符返回在cstddef
或stddef.h
找到的size_t
類型
示例代碼:
size_t size_in_bytes = sizeof(Car);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.