簡體   English   中英

C ++-動態內存分配所需的內存

[英]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運算符返回在cstddefstddef.h找到的size_t類型

示例代碼:

size_t size_in_bytes = sizeof(Car);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM