- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
Matrix matrix ( h, w );
delete &h, &w;
for ( int i = 0; i < h; i++ )
{
for ( int j = 0; j < w; j++ )
{
cout << "Введите элемент [" << i << ", " << j << "]: ";
cin >> matrix[i][j];
}
}
bormand 19.08.2013 05:14 # 0
int h, w; ?
SkaN 19.08.2013 05:16 # 0
bormand 19.08.2013 07:06 # +5
SkaN 19.08.2013 15:30 # −2
roman-kashitsyn 19.08.2013 18:19 # +2
Подумайте, нужен ли вам C++. Хорошо подумайте.
kegdan 19.08.2013 18:21 # +3
LispGovno 19.08.2013 19:31 # +2
Ты преувеличиваешь его вину. Он не удалял указатели на локальные переменные. И даже не удалял локальные переменные, размещенные по указателю. Он лишь удалил одну локальную переменную, размещеную по указателю.
vistefan 19.08.2013 20:25 # +1
Xom94ok 19.08.2013 21:06 # +2
значит, нужно как-то так
http://ideone.com/qQkD8f
LispGovno 20.08.2013 00:12 # 0
Переплюнул своего препо давателя.
maniac 19.08.2013 19:45 # 0
>>то именно это и надо кидать на ГК
Каюсь, грешен! Огромная структура объявлялась в стеке, который неожиданно кончился.
Но ведь это же уныло на 95% - чего УГ постить-то?
LispGovno 20.08.2013 00:15 # +1
У этого даже был какой-то плюс и он эксплуатировался где-то в коде около вызова конструктора. Я вот забыл. Подумаю - может вспомню и отпишусь.
LispGovno 20.08.2013 00:35 # 0
kegdan 19.08.2013 07:18 # +1
myaut 19.08.2013 08:20 # +3
Use-after-free что ли?
bormand 19.08.2013 11:19 # +2
Да тут вообще что-то странное и необычное происходит... То ли освобождение автоматической переменной, что маловероятно. То ли указатель на инт (причем, видимо, ради удобства обращения к инту сконверченный в ссылку), необходимость которого тоже трудно объяснить.
Для полного понимания кода реквестирую у ОП'а описание h и w и их инициализации.
SkaN 19.08.2013 15:32 # −3
blackhearted 19.08.2013 15:34 # +3
Совсем там накурились?
SkaN 19.08.2013 15:35 # −3
kegdan 19.08.2013 18:09 # +5
SkaN 19.08.2013 20:18 # −3
main.cpp:34:12: error: type ‘int’ argument given to ‘delete’, expected pointer
delete h, w;
нате!
tirinox 19.08.2013 22:06 # +1
Найди его и ударь ему в бубен!
А если сам придумал, то бросай С++ и иди в гуманитарное направление. Напр, в абстрактную живопись :)
SkaN 19.08.2013 22:28 # −2
bormand 19.08.2013 22:35 # +4
Как можно прочитать о delete, но не прочитать о new и вообще о том, что такое куча?!
P.S. Сам я учил плюсы после паскаля, и уже имел представление о куче.
SkaN 19.08.2013 23:25 # −1
LispGovno 20.08.2013 00:32 # +3
> он для ссылок
в тундру
bormand 20.08.2013 10:22 # +1
Ну вот в том и прикол - про то, что delete есть прочитали, а про то, зачем он юзается, однозначно нет. Хотя есть возможность, что проблема не в вас, а в туториале.
P.S. Почитайте лучше вместо туториалов нормальную книжку. Шилдт вроде-бы неплохую написал. Ну и The C++ Programming Language от автора крестов.
bormand 20.08.2013 10:57 # +1
Ничего личного. Просто заебала уже эта ситуация, когда новички начинают учить язык по туториалам. Вы не первый, и не единственный, кто попался на эту удочку ;(
По туториалу, имхо, можно изучать основы языка только тем, кто как минимум пару языков полноценно осилил, и для него динамическая память, GC, исключения, классы, указатели, основные структуры данных, приемы разработки и т.п. уже не являются чем-то новым.
И самое плохое в туториалах то, что зачастую их пишут нубы, не разобравшиеся в проблеме. В духе "Написал тут на днях связный список, пойду учебную статью на хабре запилю".
P.S. Подкиньте ссылочку на ваш туториал, плиз.
SkaN 20.08.2013 13:16 # −1
bormand 20.08.2013 13:27 # +1
> ПХП, конечно, не такой высокоуровневый язык
Да PHP повыше уровнем будет, чем c++. Но не скажу, что проще.
SkaN 20.08.2013 13:36 # 0
bormand 20.08.2013 13:41 # +1
tirinox 20.08.2013 15:10 # +1
SkaN 21.08.2013 01:07 # +2
kegdan 21.08.2013 01:16 # +2
bormand 21.08.2013 08:04 # 0
Это в си нет, там есть только строковые литералы, но не строки. А в крестах есть вполне полноценный класс.
kegdan 21.08.2013 08:24 # 0
bormand 21.08.2013 08:35 # 0
А тут смотря с какой точки зрения смотреть.
Встроенного типа "строка" там действительно нет. Но есть в стандартной библиотеке класс std::string, и есть строковый литерал, который на самом деле просто сахарок для массива из конст чаров.
Поэтому строки в крестах и есть и нет ;)
kegdan 21.08.2013 09:00 # +1
Я об этом и говорил)
roman-kashitsyn 21.08.2013 11:08 # +1
> кажется я это в умной книжке по плюсам читал
я тоже читал эту откровенно пессимистическую статью-перевод с хабра, но искать мне её лень.
bormand 21.08.2013 12:37 # +1
kegdan 21.08.2013 12:39 # +1
WGH 20.08.2013 15:14 # 0
kegdan 20.08.2013 15:38 # 0
wvxvw 20.08.2013 18:22 # +1
kegdan 21.08.2013 00:57 # 0
kegdan 20.08.2013 13:39 # +1
А теперь забыл?)
>не такой высокоуровневый язык, но тем не менее я в этом шарю
Плюсы - они универсальные. На них все пишут - от дров до корпоративных приложений. И за универсальность приходиться платить порогом вхождения. Шарить в ПХП и шарить в плюсах - небо и земля.
Кстати пхп многие считают быдлоязыком. На самом деле репутацию языка составляют кодеры, так уж повелось, что на пхп кодят в основном не совсем адекватные личности. Многие считают, что плюсы таки излишни - достаточно знать си и Java. Я к тому, что, раз есть такие проблемы как use-after-free, то есть проблемы и с ООАиП и ООП. Может пока стоит теорию почитать да си подучить? Наскоком все и сразу вряд ли дастся.
bormand 20.08.2013 13:46 # 0
Ну сейчас корпоративщики все-таки уходят в сторону жабы\шарпа. А дрова, емнип, они всегда на си без плюсов, ибо ядерный рантайм совсем не такой, как в юзерленде.
Вот и остаются для крестов игрушки да сервера, в которых требуется производительность, которую ява/шарпик/питон не вытянут, а на сишке пилить будет неудобно... Ну и legacy проекты, которые уже на с++ начаты.
> Многие считают, что плюсы таки излишни - достаточно знать си и Java.
И не без оснований ;)
kegdan 20.08.2013 14:15 # 0
Что вполне логично - удобнее же.
>А дрова, емнип, они всегда на си без плюсов, ибо ядерный рантайм совсем не такой, как в юзерленде.
У меня знакомый работает в конторке по написанию софта usb устройств, микроэлектроники и всякого такого, и он говорил, что весь код на плюсах (ибо без ооп хреновенько)
>Вот и остаются для крестов игрушки да сервера
Игрушки игрушкам рознь. Под андроиды игры часто на жабе пишут, да и времяубивалки все равно
не чем писать зачастую. Понятно, что движки от всяких крайзисов на плюсах писаны - ибо и производительность нужна и хорошая поддержка кода.
> И не без оснований ;)
Тут еже можно вспомнить былинные холивары - плюсы али жаба. В итоге языки заняли свои ниши и мирно сосуществуют. И шарпик между ними.)
bormand 20.08.2013 14:39 # 0
Не ну на самих контроллерах кресты юзают. И в софте для управления тоже. А вот именно в дровах для линуха или винды - чет очень сомнительно. Хотя могу ошибаться ;)
kegdan 20.08.2013 14:51 # 0
Друг сказал что дрова тоже на плюсах, я сам удивился, ибо все-таки си достаточно
guest 20.08.2013 15:25 # 0
bormand 20.08.2013 15:38 # +2
Нужно поотключать. Иначе придется писать несколько функций по их поддержке. new/delete тоже придется самому пильнуть.
О стандартной крестолибе всяко придется забыть, ну разве что шаблонные классы будут работать.
> Получится эдакий Си с классами.
А так ли нужны там классы?
Ну и пара вопросов:
1) вы о винде или о линухе?
2) писали ли вы дрова на плюсах сами, попадались ли вам дрова, написанные, на них (если да, то есть ли линк?), или же это просто рассуждения?
kegdan 20.08.2013 15:47 # 0
Классы - это удобно. А если есть возможность - почему бы и нет?
bormand 20.08.2013 16:15 # +1
Стильно, модно, молодежно!
kegdan 20.08.2013 16:17 # 0
3.14159265 20.08.2013 16:24 # +2
Там что важно есть женешаблоны, коих в сишке нету.
roman-kashitsyn 20.08.2013 16:28 # 0
ООП при работе с usb весьма полезно, даже в ядре линупса оно в стиле ООП сделано, хоть и на голой сишечке.
Плюсы сами по себе тоже интересны, в основном из-за шаблонов и широких возможностей дизайна. Ну и просто хорошая школа жизни...
eth0 20.08.2013 20:54 # 0
Дай дураку register_globals, он себе голову отпилит.
kegdan 21.08.2013 01:00 # +3
"Два фермера напившись виски(ну или чего там бухают
ковбои) начали спорить,кто из них самый смелый.Началось с
банальностей,во время спора швырялись мороженной репой.Этого было мало и
один из них с криком "смотри какой я крутой",взял бензопилу и отпилил
себе ступню.Другой,не долго думаю,типа "ты лох,вот я круче тебя" отобрал
пилу и одних махом отпилил себе голову.В Америке настолько суровые
фермеры,что на спор отпиливают себе башку..."
Lure Of Chaos 22.08.2013 20:50 # 0
SkaN 19.08.2013 23:26 # 0
LispGovno 20.08.2013 00:29 # 0
Двоичная куча, 2-3 куча, Биномиальная куча, Фибоначчиева куча.
Зазубриваешь и пытаешься понять что это такое, а затем реализовать.
Раньше чем изучишь - тебе в программировании делать будет нечего.
Потом гуглишь
Куча память.
Не сладкая жизнь у пограммистов
guest 20.08.2013 11:06 # +2
kegdan 20.08.2013 03:23 # +4
"Куча-куча ты могуча,
но ужастна и говнюча,
Отпусти через делЕт
то, что new отдал тебе"
И, если тебе повезет, куча отпустит. И тебя тоже отпустит. А вообще - луркани хотя бы вики. Это конечно не тот ресурс для нужно учиться прогать, но когда знаний нет совсем - тоже сгодится
SkaN 20.08.2013 03:39 # 0
З.Ы.: пасяп за столь понятное объяснение :D
kegdan 20.08.2013 03:56 # 0
Читай умные книжки
SkaN 20.08.2013 05:26 # 0
kegdan 20.08.2013 05:50 # 0
bormand 20.08.2013 10:18 # +1
Сначала покажите мне официальный кресто-туториал ;) Интересно было бы полистать.
kegdan 20.08.2013 10:54 # 0
kegdan 20.08.2013 03:06 # 0
bormand 20.08.2013 10:48 # 0
Ну как бы да ;) Вот эта куча г.. http://govnokod.ru/10011 была написана как раз в то время.
tirinox 20.08.2013 10:56 # +1
Понимаешь, да, людям свойственно ошибаться, не понимать чего-то во время обучения. Но не в таких масштабах. Я представляю, если бы ты учился на медицинском и тебе на практике пришлось бы ставить капельницу, а ты бы руку пациенту отрезал. Потом бы оправдывался, что читал туториал, но не обратил внимания, что руку в других случаях отрезают?
bormand 20.08.2013 11:08 # +1
Ага, представляю - студент медухи поучаствовал в своей первой операции (в лучшем случае ставя зажимы и убирая кровь, ничего более серьезного ему не доверили), и пошел писать на хабре статью о том, как делаются операции, а другие "хирурги", начитавшись этой статьи пошли пользоваться этой статьей как руководством. Нонсенс? Да. Но в IT, к сожалению, именно так и делают.
kegdan 20.08.2013 11:46 # 0
bormand 20.08.2013 11:51 # +5
http://www.mojbred.com/files/20060917/Kurjezy_Vojennoj_Mediciny.htm
Читаем второй рассказ "Автономный Аппендицит" :)
P.S. Сборник не рекомендуется читать за едой и перед сном.
kegdan 20.08.2013 12:03 # 0
tirinox 20.08.2013 12:41 # 0
defecate-plusplus 20.08.2013 12:50 # +1
bormand 20.08.2013 13:09 # 0
Спасибо, закинул на читалку.
3.14159265 20.08.2013 14:45 # 0
http://www.youtube.com/watch?v=65meByViGZs
bormand 20.08.2013 14:50 # +1
eth0 20.08.2013 20:56 # +1
Xom94ok 20.08.2013 21:17 # +1
Огромное спасибо.
bormand 19.08.2013 22:33 # 0
- delete[] применяется только к указателям на массив, запиленный при помощи new[].
- free применяется только к указателям на блок памяти, запиленный с помощью malloc/realloc.
Автоматические переменные аля int h, w; удалять не нужно. Аргументы функций и глобальные переменные тоже.
LispGovno 20.08.2013 00:34 # 0
spivti 19.08.2013 18:14 # 0
maniac 19.08.2013 19:40 # 0
LispGovno 20.08.2013 00:31 # +1
или
?
bormand 20.08.2013 10:33 # +2
tirinox 20.08.2013 11:00 # 0
bormand 20.08.2013 11:02 # +3
P.S. Главное чтобы по моим крестоблядским шедеврам никто не учился писать код ;)
kegdan 20.08.2013 14:56 # 0
Реально жалко этих людей)
blackhearted 20.08.2013 10:35 # +1
guest 20.08.2013 11:05 # 0
то второе правильнее.
blackhearted 20.08.2013 11:39 # 0
bormand 20.08.2013 11:41 # +1
P.S. Стоп. Приоритет у delete сильнее, чем у запятой. Значит только так: Или так: А в вариантах LispGovno действительно похер, "удалит" первую.
blackhearted 20.08.2013 14:35 # 0
OCETuHCKuu_nemyx 05.04.2019 01:19 # 0