Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268

Segmentation fault в конце работы программы

26.04.2011, 23:45. Показов 1888. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив:
C++
1
std::string names[1010];
Если в него заносится любое кол-во строк (до 1010), у которых до четырёх символов, всё нормально. Если от четырёх - программа нормально работает, но в самом конце её работы вылетает segmentation fault. В чём может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2011, 23:45
Ответы с готовыми решениями:

Printhepl ключом -h выдает что делает программа, но в конце пишет segmentation fault(core damped)
Помогите выявить ошибку, компилю в линуксе, когда вызывают Printhepl ключом -h он выдает что делает программа, но в конце пишет...

segmentation fault(
#include<time.h> #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int i,n,str; str=(int)malloc(200); ...

Segmentation fault
Собственно отрывок кода: my_news.max_news = atoi(sql("SELECT COUNT(*) FROM t_news WHERE a_id")); for (int _w = 1; _w <=...

6
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
27.04.2011, 12:55
Цитата Сообщение от Vladiator Посмотреть сообщение
В чём может быть проблема?
В стеке.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.04.2011, 13:39
Ты код лучше покажи. А то одному богу только известно, что у тебя подразумевается под "заносится". Уж очень смахивает на то, что ты там с указателями коряво работаешь (потому и число 4 возникло)
0
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
27.04.2011, 17:19  [ТС]
Код ужасен - из-за того, что было куча тех же ошибок на более ранних этапах.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>
#include <algorithm>
#include <string>
#include <iostream>
 
struct note {
    int time;
    int name;
};
 
std::string names[1010];
int cn;
std::string rs;
std::string nn;
std::string a;
note notes[1010];
 
int getN() {
    for (int i=0; i<cn; i++) {
        if (names[i]==nn) {
            return i;
        }
    }
    names[cn]=nn;
    cn++;
    return cn-1;
}
 
int main() {
    int h,mm,s;
    char* cc;
    char ha;
    int n,m,i;
    int ri;
    bool isin[1010];
    int times[1010];
    cn=0;
    scanf("%d %d",&n,&m);
    for (i=0;i<n;i++) {
        scanf("%d:%d:%d%s",&h,&mm,&s,cc);
        notes[i].time=s+mm*60+h*1440;
        nn.assign(cc);
        ri=getN();
        notes[i].name=ri;
    }
    for (i=0;i<m;i++) {
        scanf("%d:%d:%d",&h,&mm,&s);
        times[i]=s+mm*60+h*1440;
    }
    std::sort(&times[0],&times[m]);
    h=0;
    mm=0;
    ri=0;
    for (i=0;i<n;i++) {
        isin[i]=false;
    }
    while (true) {
        if ((h>=n) && (mm>=m)) return 0;
        if ((h<n)&&(notes[h].time<=times[mm])) {
            if (isin[notes[h].name]==true) isin[notes[h].name]=false; else isin[notes[h].name]=true;
            if (isin[notes[h].name]) ri++; else ri--;
            h++;
        } else if (mm<m) {
            printf("%d",ri);
            for (i=0;i<n;i++) if (isin[i]) printf(" %s",names[i].c_str());
            printf("\n");
            mm++;
        } else return 0;
    }
    return 0;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.04.2011, 17:27
В 31-й строке неинициализированный указатель "cc", в 40 ты его подаёшь в scanf. В итоге куда записали - науке неизвестно
1
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268
27.04.2011, 17:57  [ТС]
Evg, спасибо, сделал "cc = new char" - ошибки не стало.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.04.2011, 22:01
Цитата Сообщение от Vladiator Посмотреть сообщение
Evg, спасибо, сделал "cc = new char" - ошибки не стало.
Сия конструкция выделяем память размером в один байт. В один байт может влезть только пустая строка (содержащая завершающий NULL). То, что "ошибки не стало" - это тебе пока просто везёт, потому как new выделяет память, выровненную не то на 8, не то на 4 байта
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2011, 22:01
Помогаю со студенческими работами здесь

Segmentation fault
Не могу разобраться в чем проблема :wall: хотя примерно понимаю, что она связана с удалением объектов. Суть такая: - есть несколько...

Segmentation fault
Доброго времени суток. Есть 2 класса. object class object{ void (*f)(object*); public: void setFunc(void...

Segmentation fault
Кусок кода: template &lt;typename Type&gt; class Queue { private: struct Elem { Elem*...

Segmentation fault
Пытаюсь реализовать генетический алгоритм на с++. Всего существует два класса: GeneticEngine, FitnessFunction. Класс FitnessFunction...

Segmentation fault
Здравствуйте. Нужно динамически получить такое: char * a = {&quot;abc&quot;, NULL}; Пробую: char ** a; a = new char*; a = new char; ......


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru