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