Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 05.04.2016
Сообщений: 6

Ошибка сегментирования

10.05.2016, 01:56. Показов 1379. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста, почему программа выводит "Ошибка сегментирования".
C++
1
2
3
4
5
6
7
8
#include <stdlib.h>
#include <time.h>
int main(){
        srand(time(0));
        unsigned long long k=RAND_MAX;
        unsigned long long array[2*k];
        for(unsigned long long j=0;j<2*k;j++)array[j]=rand();
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2016, 01:56
Ответы с готовыми решениями:

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; while ((ch = cin.get()) != '0' ) ...

Ошибка сегментирования
Добрый день, возникла проблема: Вот программа, суть из исходного файла у слов удаляется окончание 's' (если оно присутствует), плюс даны...

ошибка сегментирования
При запуске скомпилированной (gcc) программы выскакивает ошибка сегментирования, а при запуске ее же в дебагере (gdb) -- program exited...

8
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
10.05.2016, 03:29
Alexey_127,
C++
1
const unsigned long long k=RAND_MAX;
По крайней мере в VS2013 работает
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
10.05.2016, 03:54
Лучший ответ Сообщение было отмечено Alexey_127 как решение

Решение

Цитата Сообщение от Alexey_127 Посмотреть сообщение
unsigned long long k=RAND_MAX;
unsigned long long array[2*k];
Во-первых, в С++ не разрешается объявлять массивы неконстантного размера.

Во-вторых, даже если ваш компилятор разрешает такое, то чему у вас равно RAND_MAX? Если массив получился огромным, то он может просто быть слишком большим для локальной памяти. Потому все и вылетает.
0
0 / 0 / 1
Регистрация: 05.04.2016
Сообщений: 6
10.05.2016, 04:09  [ТС]
TheCalligrapher, объясните, то, что вы написали во-вторых.
0
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
10.05.2016, 04:20
Alexey_127, имеется ввиду, что при объявлении статического массива, выделяется память размером 2*k*sizeof(unisgned long long)
1
0 / 0 / 1
Регистрация: 05.04.2016
Сообщений: 6
10.05.2016, 11:20  [ТС]
Я попробовал вот так, но все равно не работает.
C++
1
2
3
4
5
6
7
8
9
10
#include <stdlib.h>
#include <time.h>
const unsigned long long k=RAND_MAX;
int main(){
        srand(time(0));
        unsigned long long *array;
        array=(unsigned long long*)malloc(2*k*sizeof(unsigned long long));
        for(unsigned long long j=0;j<2*k;j++)array[j]=rand();
        free(array);
}
0
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
10.05.2016, 11:23
Alexey_127, компилятор gcc?
0
0 / 0 / 1
Регистрация: 05.04.2016
Сообщений: 6
10.05.2016, 14:33  [ТС]
Да gcc 4.9.2
0
Заблокирован
10.05.2016, 22:07
Alexey_127, что за ерись генить RAND_MAX элементов?(!)Напиши лучше в каком диапазоне тебе нужны случайные числа, вот зуб за 100 даю надо сгенить флоаты и используешь какой то говнокод с какого то говносайта.
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
то чему у вас равно RAND_MAX?
- это стандартная величина объявленная в limits.h
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <climits>
using namespace std;
 
int main(){
    cout<<RAND_MAX<<endl;
    return 0;
}
http://codepad.org/7kcsl9Vo
2147483647
(хоть представляете сколько это элементов??!)

Добавлено через 2 минуты
Цитата Сообщение от Alexey_127 Посмотреть сообщение
array=(unsigned long long*)malloc(2*k*sizeof(unsigned long long));
* * * * for(unsigned long long j=0;j<2*k;j++)array[j]=rand();
- понятное дело потому что long long имеет размер 8 байт и их 2147483647 это 16 Гиг(вдумайся в размер памяти)
и забудь о выделении памяти в С++ через malloc (это Сишное выделение), в плюсах память аллокают через new.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2016, 22:07
Помогаю со студенческими работами здесь

Ошибка сегментирования
Здравствуйте. Здесь представлена программа, единственное назначение которой промоделировать поведение другой более сложной программы. ...

Ошибка сегментирования
Здравствуйте. Ниже моя реализация алгоритма Крускала. Проблема заключается в том, что на этапе добавления элемента через функцию...

Ошибка сегментирования
Написал я быдлокодик, вроде компилируется даже. Но при запуске под Linux'ом вылетает ошибка сегментирования, не могу понять откуда она. ...

Ошибка сегментирования
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; #include &lt;fcntl.h&gt; #include &lt;string.h&gt; using...

C++ Ошибка сегментирования
Вот листинг файла: #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru