«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Стек против кучи в C ++: когда мне следует использовать каждый?

Стек против кучи в C ++: когда мне следует использовать каждый?

Опубликовано в 2025-03-23
Просматривать:137

Stack vs. Heap in C  : When Should I Use Each?

понимание стека и использования кучи в C

управление памятью эффективно имеет решающее значение при программировании C. При определении того, где хранить переменные, необходимо определить между стеком и кучей. Ключевое различие заключается в сроках срока службы переменных.

стек:

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

  • heap: хранит объекты, редко используемые переменные и большие структуры данных, которые необходимы для того, чтобы они объявляли функцию. код фрагмент:
  • class thingy; Вещь* foo () { int a; // стек-выделенный целое число Вещь B; // стек-выделенный объект Thingy *pointertob = & b; // Указатель на стек-выделенный объект Thingy *pointertoc = new Thingy (); // Объект с помощью кучи. // Безопасно: куча выделяет вещи, переживание foo () вернуть Pointertoc; // небезопасно: стек-выделение будет уничтожено при возврате foo () вернуть PointerTob; }
  • в этом примере:

    a и b хранятся в стеке, потому что они локаль foo ().

    , пытаясь вернуть Pointertob, может привести к сбою, как размышляющий над стеком объектом, который он указывает, будет уничтожен. машина. «Куча» и «стек» - это изобретения компилятора, а память компьютера - просто массив адресов. Изучив такие понятия, как стек вызовов и вызов, можно понять, как машина выполняет функции и управляет памятью.

    ]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3