Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Vladiator
1574 / 645 / 79
Регистрация: 24.02.2009
Сообщений: 9,268

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

26.04.2011, 23:45. Показов 1880. Ответов 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
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru