0 голосов
спросил от в категории C
В пределах выделенного блока памяти хранятся только нестатические переменные-члены. В вашем примере память содержит только элемент x и поэтому имеет по крайней мере размер int .

можно проверить это, распечатав адреса:
class A { public:     A() { x = 0; }     int x; }; int main() {     A *a = new A();     printf("Size of A = %lun", sizeof(*a));     printf("Address of a = %pn", a);     printf("Address of a->x = %pn", &a->x);     return 0; }
, который может печатать
Size of A = 4 Address of a = 0x602010 Address of a->x = 0x602010

Обратите также внимание на правильный синтаксис, использованный в моем примере (определение класса должно быть завершено точкой с запятой, а a является указателем).

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Вы можете создать объект в стеке или динамически в куче.
В стеке:

0 # ##

Теперь существует «a», пока вы выполняете myFunc.

Динамически в куче:

A* heapA = new A(); 


Теперь у вас есть указатель на A и вы можете использовать его, если вам это нужно.
> После этого вам нужно уничтожить его, чтобы освободить память:
delete heapA; 


Надеюсь, вопрос. Для получения дополнительной информации см.
void myFunc() {    A a; }
# [
A* heapA = new A(); 
#]

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...