@Kop3t3

Есть ли в c++ способ выделить память под все переменные?

Доброго времени суток,
Есть ли в c++ способ выделить память под все переменные. Например, такая история:
Пишу программу, которая забирает данные из буфера обмена, и сохраняет там только английские буквы. Писал под Dev c++ portable, в vmware thinstall контейнере. Собралось и при запуске по кнопке в IDE работает, однако, когда я запускаю программу по двойному клику вне thinstall - контейнера, то она падает. Значит, я где-то забыл выделить память, а thinstall`евский контейнер её выделяет (в теории). Можно сделать так-же?
  • Вопрос задан
  • 2747 просмотров
Решения вопроса 1
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Для начала прочитайте эти объяснения. Осознайте, что существует 2 принципиально разных способа хранения информации - на стеке и в "динамической памяти". Для объектов на стеке не надо дополнительно резервировать память, и они автоматически удаляются при выходе из функции.
Выделить память автоматически, разумеется, нельзя. Дело в том, что часто нам не известен размер памяти, которую необходимо выделить. Однако, в большинстве случаев можно использовать стандартные типы данных, например, std::vector, в которых эти операции написаны за вас. В реальном коде может практически не быть в ручную вызываемых операций delete благодаря использованию "умных указателей".
В вашем случае далеко не факт что проблема именно в этом. Возможно, вы обращаетесь за границы какого-то массива или пытаетесь что-то повторно удалить, или одна из десятков других причин. Различное поведение может объясняться различным режимом сборки debug/release, или, скорее всего, вам "везет" в виртуалке, и вы не вылезаете за пределы зарезервированной для вашего приложения памяти.
P.S. Почитайте умных книжек по C++, без этого не как. Начните с этой, например.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
icelaba
@icelaba
Знаю и умею всё
Может вам лучше ошибку отловить, например запустить под дебаггером и посмотреть где и почему падает? :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы