• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Куча в С++

  • Автор темы Guest
  • Дата начала
G

Guest

Здравствуйте..... Не давно начал изучать "Кучу в С++" и много я не понял...
Подскажите пожалуйста:
Куча нужна Только для указателей???
Например вот код
Код:
int y;
int* x;
x = new int;
x = &y;
*x = 15;
cout << y <<endl;
delete x;
x = 0;
Вот зачем например нужна строчка x = new int; ? что мне дает эта куча?
Ну вообщем поясните пожалуйста поподробнее, зачем нужна КУЧА, и как ее использовать! Заранее благодарю.... :)
 
D

Dimmuborgir

куча нужна для динамически выделяемой памяти. строка x = new int; выделяет в памяти sizeof(int).
 
G

Guest

Ну а зачем вообще нужно выделять эту память? Ведь без строки x = new int; программа все равно работала бы! Если можно расскажите пожалуйста по подробнее об КУЧЕ... Просто я недавно только начал изучать этот язык.. И много еще чего не понимаю....
 
D

Dimmuborgir

представь что тебе нужно задать массив размер, которого хранится в переменной, к примеру:

Код:
cin>>n;

как теперь задать массив целых чисел размерностью n ?
 
G

Guest

И как?
P.S.: Куча нужна только для указателей?
 
D

Dimmuborgir

Код:
Использовать вектор
ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
 
E

European

ну а если речь идет о дос компиляторе С++ к пример турбо Си 3? там STL нету)
Ладно, проехали... Там смайлик стоял, вообще-то

P.S.: Куча нужна только для указателей?
Куча нужна для размещения объектов. Оператор new возвращает указатель на созданный объект
 
D

Dimmuborgir

вообщем лано отвечу простым примером для Джек_Воробей:

Код:
cin>>n;
int x[n]  <------ошибка! n не является константой
int *x=new int[n]; <---- все хорошо. память выделяется динамически
//какието операции с x
delete [] x;

а вообще когда начнешь классы изучать, узнаешь что такое виртуальные функции, и т д, то поймешь что к чему точно) и зачем нужна куча..
 
G

Guest

Извините, что не по теме, но мне интересно стало: Я так понял, что КЛАССЫ самая трудная тема?
 
G

grigsoft

Ой, да не слушай их:D Только что прочитал отличную статью про преподавание математики в школах ( , рекомендую) - о том как из изящной, простой и красивой науки в школе делают свод нудных правил, путаницу с кучей ненужных обозначений.
Так и здесь - С++ - весьма изящная вещь, классы - это же очень красиво. То, как изначальный С ложится на архитектуру ПК - тоже. А какая песня использование 2го дополнения для представления отрицательных чисел?
Нет тут ничего сложного, надо только вникнуть в суть - в тот как собственно компьютер работает. По С++ почитай, например, "Дизайн и Эволюция С++", если представление о С уже имеешь.
 
G

gamecreator

а зачем нужны классы? до конца еще не понял
 
G

grigsoft

С одной стороны, они и не нужны совсем - все, что можно написать с классами, можно написать и без них. Более того, часто итоговый код может быть короче и работать будет быстрее. А уж неоправданное использование классов так вообще может здорово усложнить разработку. Так что классы - не панацея.
С другой стороны они позволяют: упростить понимание и проектирование программы в целом за счет оперирования объектами из реальной жизни, выделить независимые части, которые проще делать и сопровождать, облегчают безопасное последующее использование компонент за счет скрытия деталей реализации.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!