Как создать структуру в C ++ - PullRequest
0 голосов
/ 28 января 2012

Предположим, у меня есть структура с именем Node следующим образом:

struct foo
{
   foo *next;
   int aNum;
};

Как мне создать "экземпляр" этого в C ++ (например, в основном методе)?Я оглянулся вокруг, и мне кажется, что я бы просто сделал

foo name;

Но мне кажется, что мне нужно было бы сначала выделить место.Может кто-нибудь объяснить (длинное объяснение не нужно)

Ответы [ 2 ]

3 голосов
/ 28 января 2012

foo name; это способ сделать это. Это выделит для него хранилище в стеке, которое называется статическим распределением (кроме случаев, когда переменная является глобальной, что означает, что она будет размещена в самом исполняемом файле программы).

Если вы хотите выделить его динамически (вам часто не нужно делать это в C ++), используйте std::unique_ptr<foo> name = new foo; или std::shared_ptr<foo> name = new foo;. Также см. std::unique_ptr ссылка и std::shared_ptr ссылка .

2 голосов
/ 28 января 2012

Если вы определите свой экземпляр следующим образом, это объект длительность автоматического хранения .Это означает, что компилятор генерирует для вас код, который заботится о выделении и освобождении памяти для этого объекта.

Этот метод имеет ограничения.Время жизни объекта, созданного таким образом, всегда связано с временем жизни окружающей функции или объекта-владельца.Кроме того, если объект является локальной переменной внутри функции, он обычно размещается в стеке, размер которого обычно весьма ограничен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...