C ++, ошибки сегментов и управление памятью - PullRequest
6 голосов
/ 09 февраля 2010

Я перехожу с Java на C ++ и мне это очень нравится. Одна вещь, которая мне не нравится, - это вообще не понимать память, потому что раньше Java делала это для меня.

Я купил книгу «Память как концепция программирования на С и С ++» - Франтишек Франек

Есть ли какие-нибудь хорошие сайты для интерактивного изучения C / C ++ и использования памяти (руководства, форумы, группы пользователей)?

Ответы [ 2 ]

5 голосов
/ 09 февраля 2010

Управление памятью в C ++ практически автоматическое (с несколькими оговорками).

Большую часть времени не динамически выделяет память.
Используйте локальные переменные (и обычные переменные-члены), и они будут автоматически создаваться и разрушаться.

Когда вам нужны указатели, используйте умный указатель.
Начните с использования boost :: shared_pointer вместо указателей.
Это поможет вам выбрать правильный путь и прекратит случайное удаление памяти в неподходящее время, и 90% вашего кода будет выпущено правильно (к сожалению, циклы вызовут проблему (только с точки зрения утечек), и вам нужно будет проектировать соответственно (но мы есть другие умные указатели для работы с циклами weak_ptr))

Мое основное правило заключается в том, что класс никогда не содержит указатель RAW. Всегда используйте некоторую форму стандартного контейнера или умного указателя. Используя их; вызовы деструкторов становятся автоматическими.

Как только у вас возникнет чувство, начните читать о других умных указателях и когда их использовать:

Умные указатели: или кому принадлежит ваш ребенок?

2 голосов
/ 09 февраля 2010

Попробуйте это:

http://www.mycplus.com/tutorials/cplusplus-programming-tutorials/memory-management/

http://www.cantrip.org/wave12.html

http://linuxdevcenter.com/pub/a/linux/2003/05/08/cpp_mm-1.html

И в википедии: http://en.wikibooks.org/wiki/C++_Programming/Memory_Management

В этой статье будут сравниваться операторы управления памятью Java с эквивалентами C ++: http://www.javamex.com/java_equivalents/memory_management.shtml

http://www.infosys.tuwien.ac.at/Staff/tom/Teaching/UniZH/CPP/slides/cpp_07.pdf

Надеюсь, они вам помогут!

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