vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« : Апрель 16, 2008, 02:36:44 » |
|
Напишите программу на С (С++) которая вылетит с эксцепшеном. Программа должна быть минимального размера.
|
|
« Последнее редактирование: Апрель 23, 2008, 11:28:56 от vimmax »
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
naxellar
Главный флудер
Проректор
Карма: +101/-52
Offline
Пол:
Сообщений: 5015
Главный флудер
|
|
« Ответ #1 : Апрель 16, 2008, 02:55:33 » |
|
void main() { int* z = z; }
|
|
|
Записан
|
|
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #3 : Апрель 16, 2008, 04:00:38 » |
|
naxellar отрабатывает нормально в VC6, без ошибок. Alder прерывается с ошибкой, но надо еще меньше кода.
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #4 : Апрель 16, 2008, 05:58:15 » |
|
void main() { *(int*)0 = 1; }
Вариация на тему: void main() { (*(int*)0)++; }
Получим гарантированный segmentation fault.
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #5 : Апрель 16, 2008, 06:09:28 » |
|
В языке С нет исключений. Вот вам гарантированное исключение С++
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #6 : Апрель 16, 2008, 06:37:52 » |
|
В языке С нет исключений. Ясное дело. Но по формулировке вопроса и комментариям vimmax я понял, что нужно добиться аварийного завершения программы. А код у тебя действительно получился самый короткий
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
naxellar
Главный флудер
Проректор
Карма: +101/-52
Offline
Пол:
Сообщений: 5015
Главный флудер
|
|
« Ответ #7 : Апрель 17, 2008, 01:08:16 » |
|
vimmax, я в VS2008 пробовал. Компилятор не указывали, значит текущий, значит мой ибо устревшее не катит.
|
|
|
Записан
|
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #8 : Апрель 17, 2008, 01:26:27 » |
|
naxellar, вот именно, раз компилятор не оговоривался, то речь шла именно о языке С++, значит ориентироваться нужно не на какой-либо компилятор, а на стандарт языка С++.
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
naxellar
Главный флудер
Проректор
Карма: +101/-52
Offline
Пол:
Сообщений: 5015
Главный флудер
|
|
« Ответ #9 : Апрель 17, 2008, 01:51:03 » |
|
LazarusLong, дык стандарт не описывает, где возникнет исключение, где программа вылетит... Все зависит от того, как понимает код компилятор.
|
|
|
Записан
|
|
|
|
Артем
sprata
Mодератор
Завкаф
Карма: +40/-5
Offline
Пол:
Сообщений: 1107
|
|
« Ответ #10 : Апрель 17, 2008, 07:19:29 » |
|
int main(int argc, char* argv[]) { int *f; return *f; } Alder прерывается с ошибкой, но надо еще меньше кода. vimmax, а у меня на Borland C++ 3.11 код Alder'a отрабатывает нормально без каких-либо ошибок Код EvilMax'a у меня тоже работает и не вызывает аварийного завершения работы. Borland C++ 3.11 рулит !
|
|
« Последнее редактирование: Апрель 17, 2008, 07:29:43 от artem90 »
|
Записан
|
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #11 : Апрель 17, 2008, 09:27:44 » |
|
Гарантированно вызовет исключение лишь код Sochin'a )))
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #12 : Апрель 17, 2008, 11:48:35 » |
|
artem90, угу, ибо ДОСу по барабану доступ к памяти, которую не отвели. На самом деле, даже если спорить о формулировке условия задачи, код Sochin'a самый короткий.
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #13 : Апрель 17, 2008, 04:48:19 » |
|
Sochin чисто программистский код) нормально. только у меня другой вариант. Кто догадается? у меня вываливается с Stack overflow
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #14 : Апрель 17, 2008, 05:46:57 » |
|
Под рукой компилятора никакого нет, но в голову почему-то лезет всякий бред типа (Отправлено в: 17 Апреля 2008, 17:44:51)Онлайн-компилятор откомпилил без ошибок, а при запуске программа вылетела )))) C/C++ Front-end Compiler & Virtual Machine, Version 3.0. Copyright (c) 1998-2003, Interstron, Ltd.
*** C++ FrontEnd
Warnings: 0 Errors : 0 Fatal : 0 RetCode : 0
*** VM execute start program 'D:\soft\compiler\tmp\test.cpp.ir'
Fatal: INTERNAL ERROR!!!, Code: 8192376
NODE N: 91461, Type=4, Source: main() , File Name: D:\soft\compiler\tmp\test.cpp.9, Str: 2, Pos: 17
NODE N: 91461, Type=4, Source: main() , File Name: D:\soft\compiler\tmp\test.cpp.9, Str: 2, Pos: 17
Elapsed time = 1563 msec = 1 sec
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
vimmax
Модератор
Декан
Карма: +42/-3
Offline
Пол: Награды:
Сообщений: 1713
♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪
|
|
« Ответ #15 : Апрель 17, 2008, 06:12:51 » |
|
LazarusLong угу, точно, у меня такой ответ. Только не знаю кому ставить +1 теперь.
|
|
|
Записан
|
♪♪ ♫ LET FOREVER BE ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
|
|
|
|
Fr0sT
Очень добрый
Первак
Карма: +3/-0
Offline
Пол:
Сообщений: 45
ИУС 07
|
|
« Ответ #17 : Апрель 17, 2008, 06:19:32 » |
|
А вот Builder 6 не компилит этот код [C++ Error] File1.cpp(2): E2120 Cannot call 'main' from within the program
|
|
|
Записан
|
Видимо, какая-то постоянная величина оказалась немного переменной... (с) Йон Колфер
|
|
|
Alder
|
|
« Ответ #18 : Апрель 17, 2008, 06:22:25 » |
|
vimmax, думаю задачу стоит усложнить - код должен вываливаться как минимум в 3 разных компилерах - BC 3.1, Builder6, MS VC++.
|
|
|
Записан
|
"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
|
|
|
EvilMax
Администратор
Завкаф
Карма: +59/-0
Offline
Пол:
Сообщений: 1072
Злой и страшный :)
|
|
« Ответ #19 : Апрель 17, 2008, 07:14:44 » |
|
void main() { char a[10000000L]; }
Stack overflow
|
|
|
Записан
|
Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач... --- Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
|
|
|
|