|
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 2
|
||||||
segmentation fault(29.11.2013, 17:14. Показов 9302. Ответов 18
Метки нет (Все метки)
Chto ne tak? Pomogite...
0
|
||||||
| 29.11.2013, 17:14 | |
|
Ответы с готовыми решениями:
18
Segmentation fault Segmentation fault strcpy() Segmentation fault(Core dumped) |
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|
| 29.11.2013, 18:30 | |
|
Анечка, удивительно, что у вас этот код вообще скомпилировался. Вы ж пытаетесь создать дивный гибрид статического и динамического массива. Суть в том, что размер для статического массива не задается динамически, а динамический массив не задается так, как вы его задали.
Мало того. Вы с чистой совестью даете компьютеру команду выделить а хрен его знает сколько памяти. В строке с malloc'ом значение n еще не задано. Начните с этого. И вообще, лучше словами объясните, что должна делать программа. А то ваш код, кажется, не отражает всю глубину ваших замыслов
0
|
|
|
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 2
|
|
| 29.11.2013, 18:38 [ТС] | |
|
программа должна создать массив с рэндомным количеством чисел, выбранных тоже рэндомно) и вывести его на экран. каким то образом код скомпилировался, НО при выполнении ./ выдаёт segmentation fault.
0
|
|
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
||||||
| 29.11.2013, 19:34 | ||||||
|
Я не могу сказать, почему конкретно выдавался сегментейшн фолт. У меня этот код предсказуемо не скомпилировался.
Должно быть как-то так:
P.S. Пардон, в вашем коде в malloc я не увидела, что там число, а не n передается. Если у вас действительно такой пофигистичный компилятор, то ошибка памяти могла возникнуть при попытке передать ссылку на выделенную память в статистический массив неизвестного размера.
1
|
||||||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 29.11.2013, 21:56 | ||
|
А компилятор не обижайте. Cогласно стандарту (включая C99) он ДОЛЖЕН компилировать указанный код, несмотря на его абсурд, выдав соответствующие предупреждения. (об использовании неинициализированной переменной gcc сообщает при наличии опции -Wall)
0
|
||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|||||||
| 29.11.2013, 22:35 | |||||||
|
У меня именно gcc 4.7 не хотел компилить указанный код, ругаясь на строку:
0
|
|||||||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|||||||||||
| 29.11.2013, 23:22 | |||||||||||
PS.
0
|
|||||||||||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|
| 30.11.2013, 00:59 | |
|
Прошло без замечаний только после замены строки на Вашу. Выдал сегментейшн фолт. Цель достигнута!
![]() Если модератор не сочтет за флейм, то интересно спросить: что происходит здесь на уровне памяти? 1) создается статический массив случайной длины 2) указатель, возвращаемый функцией маллок, записывается в этот массив (в конец массива) в виде long. На 64-х битной системе в этот момент побеждают зло и хаос, о чем и гласит название темы. 3) Если будет 32-х битная система, то с большой степенью вероятности все прокатит. Последний элемент массива, куда записался адрес памяти, будет перезаписан в цикле, так что пользователь даже не заметит. Ночью моск не варит, но как-то так получается. Я тоже недолго программирую, мне это интересно. Да и автору темы полезно будет.
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||
| 30.11.2013, 02:26 | ||||
|
Попробуйте из этой строки удалить "str[n]=(int)" и оставить только malloc, может свалиться на нем же, если повезет с данными на стеке. Добавлено через 5 минут И эта ошибка будет воспроизводиться не всегда. Если увеличить размер стека каким-нибудь ulimit -s, то ее можно избежать и приложение не будет падать.
0
|
||||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
||||||||||||
| 30.11.2013, 03:01 | ||||||||||||
|
На Suse 12.3 падает даже при закомментированной строке с маллоком. НЕ падает, если задать размер статического массива при объявлении:
И ладно, пускай ноль! Ведь массив нулевой размерности тоже можно было объявить: #
Если все дело в n, почему так важно, что размерность не объявлена черным по белому? В чем (с точки зрения процессора) разница между случайной областью памяти, которую компилятор автоматически переведет в число, и "осмысленно" присвоенным значением?
0
|
||||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||
| 30.11.2013, 03:05 | ||||||
|
0
|
||||||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|||||||||||
| 30.11.2013, 03:06 | |||||||||||
От чего зависит разница в реакции различных linux ОС на один и тот же код? Не первый раз встречаю, что сегментейшн фолт постоянно выдается на одной системе, и далеко не каждый раз - на другой.
0
|
|||||||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||||||||||
| 30.11.2013, 03:17 | ||||||||||
|
Это зависит не от твоей ОС. Добавлено через 3 минуты
0
|
||||||||||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|||
| 30.11.2013, 03:22 | |||
Разве это разные области памяти? Это одна и та же переменная n, как я понимаю. В одном случае там наше значение, в другом - мусор, из которого компилятор сделает значение. Заметьте, я не утверждаю, что я права.)
Добавлено через 2 минуты [QUOTE=Vourhey;5412821] /QUOTE]Узбагойся.
0
|
|||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||||||||
| 30.11.2013, 03:37 | |||||||||||
что такое?
Но если у меня берется случайное значение, то массив может занять область от 0 до 16000, например. Получается, что адрес 16000 уже выходит за пределы памяти выделенной для стека. И у нашей программы доступа туда уже может не оказаться (как повезет). И вызов функции еще до своего начала упадет при ошибке доступа к 16001 адресу. Так понятнее? Добавлено через 5 минут ![]() Протестируй:
1
|
|||||||||||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|||
| 30.11.2013, 03:37 | |||
0
|
|||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 30.11.2013, 03:41 | |||
![]() Добавлено через 1 минуту http://www.ozon.ru/context/detail/id/5061928/ http://www.ozon.ru/context/detail/id/2631566/ И книги по отладке могут содержать в себе по частям разную информацию, обычно там это описывается.
0
|
|||
|
8 / 6 / 5
Регистрация: 11.11.2013
Сообщений: 75
|
|
| 30.11.2013, 03:57 | |
|
Прекрасные книги, спасибо.
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||
| 07.12.2013, 00:49 | ||||||||
|
чтобы понять, нужно сначала это дело разравнять (сделать читаемым)
0
|
||||||||
| 07.12.2013, 00:49 | |
|
Помогаю со студенческими работами здесь
19
Bad allocation || Segmentation fault Исправить ошибку, приводящую к segmentation fault Segmentation fault в конце работы программы XDestroyImage(image); Segmentation fault (core dumped) При записи в бинарный файл происходит segmentation fault Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|