C ++ динамически выделяемая память

Я не совсем понимаю смысл динамически выделяемой памяти и надеюсь, что вы, ребята, сможете прояснить ситуацию для меня.

Прежде всего, каждый раз, когда мы выделяем память, мы просто получаем указатель на эту память.

int * dynInt = new int;

Итак, в чем разница между тем, что я сделал выше, и:

int someInt;
int* dynInt = &someInt;

Как я понимаю, в обоих случаях память выделяется для int, и мы получаем указатель на эту память.

Так в чем разница между ними. Когда один метод предпочтительнее другого.

Более того, почему мне нужно освобождать память с помощью

delete dynInt;

в первом случае, но не во втором случае.

Я предполагаю:

  1. При динамическом выделении памяти для объекта объект не инициализируется, в то время как, если вы сделаете что-то вроде второго случая, объект будет инициализирован. Если это единственное различие, есть ли какая-то мотивация за этим, кроме того факта, что динамическое выделение памяти происходит быстрее.

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

Это всего лишь предположения, что мне бы понравилось, если бы кто-нибудь поправил меня и прояснил для меня вещи.

6
задан user1066113 14 December 2011 в 11:57
поделиться