Я не совсем понимаю смысл динамически выделяемой памяти и надеюсь, что вы, ребята, сможете прояснить ситуацию для меня.
Прежде всего, каждый раз, когда мы выделяем память, мы просто получаем указатель на эту память.
int * dynInt = new int;
Итак, в чем разница между тем, что я сделал выше, и:
int someInt;
int* dynInt = &someInt;
Как я понимаю, в обоих случаях память выделяется для int, и мы получаем указатель на эту память.
Так в чем разница между ними. Когда один метод предпочтительнее другого.
Более того, почему мне нужно освобождать память с помощью
delete dynInt;
в первом случае, но не во втором случае.
Я предполагаю:
При динамическом выделении памяти для объекта объект не инициализируется, в то время как, если вы сделаете что-то вроде второго случая, объект будет инициализирован. Если это единственное различие, есть ли какая-то мотивация за этим, кроме того факта, что динамическое выделение памяти происходит быстрее.
Причина, по которой нам не нужно использовать удаление во втором случае, заключается в том, что тот факт, что объект был инициализирован, создает некую процедуру автоматического уничтожения.
Это всего лишь предположения, что мне бы понравилось, если бы кто-нибудь поправил меня и прояснил для меня вещи.