Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
#1

Падает то не падает) APPCRASH StackHash PCH FROM ntdll - C++

29.06.2013, 16:35. Просмотров 3693. Ответов 22
Метки нет (Все метки)

При работе приложения вызывается метод класса и с вероятностью 50/50 программа доживает до конца своей работы
при падении выдаётся вот такое

Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: XXX.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 51cea425
Имя модуля с ошибкой: StackHash_69fe
Версия модуля с ошибкой: 6.2.9200.16384
Отметка времени модуля с ошибкой: 5010acd2
Код исключения: c0000374
Смещение исключения: PCH_78_FROM_ntdll+0x0000000000002BEA
Версия ОС: 6.2.9200.2.0.0.256.48
Код языка: 1049
Дополнительные сведения 1: 69fe
Дополнительные сведения 2: 69fe067f15cbd711de9a06a551d3dadd
Дополнительные сведения 3: f975
Дополнительные сведения 4: f975cbc478b921e800650d05b62c8dd7

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=190175

Памяти приложение жрет в районе 1-3 гигов

вот кусок кода где падает
смысл этого метода это добавление в картатеку определенного номера
по ходу дела когда размер массива "Fast_Cross_Size_Max" превышает то выделяется больше кусок памяти
начальное значение Fast_Cross_Size_Max = 5 у Fast_Cross_Size = 0

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
void Element::Add_New_Cross_Сompatible( unsigned int &_Add_Cross_ )
{
    if ( Fast_Cross_Size < Fast_Cross_Size_Max-1 )
    {
        Fast_Cross_Сompatible[Fast_Cross_Size] = _Add_Cross_;
        Fast_Cross_Size++;
    }
    else
    {
        Fast_Cross_Size_Max *= 2;
        unsigned int *temp_fast = new unsigned int[Fast_Cross_Size_Max];
        for (int i = 0; i < Fast_Cross_Size; i++)
        {
            temp_fast[i] = Fast_Cross_Сompatible[i];
        }
        delete[]Fast_Cross_Сompatible; <= падает тут когда я вытаюсь удалить эту памяти. почему я не могу понять
        Fast_Cross_Сompatible = new unsigned int[Fast_Cross_Size_Max];
        for (int i = 0; i < Fast_Cross_Size; i++)
        {
            Fast_Cross_Сompatible[i] = temp_fast[i];
        }
        Fast_Cross_Сompatible[Fast_Cross_Size] = _Add_Cross_;
        Fast_Cross_Size++;
        delete[]temp_fast;
    }
}
в компе 20 гигов памяти, память уже 10 раз проверял error не обнаружено, программа неделями работала пока я не добавил вот этот кусок кода, пожалуйста выскажитесь по этому поводу что думаете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2013, 16:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Падает то не падает) APPCRASH StackHash PCH FROM ntdll (C++):

Падает программа - C++
ошибки нет. предупреждения такого вида: warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead....

Почему падает программа? - C++
Почему падает программа? Компилируется без ошибок, но при запуске аварийное завершение работы. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Падает программа с opencv - C++
Код #include &lt;cv.h&gt; #include &lt;highgui.h&gt; int main() { // задаём высоту и ширину картинки int height = 620; ...

std::random_device падает приложение - C++
win7, gcc 4.4.7 пишет, ошибка &quot;std::runtime_error&quot; чего ему надо? Добавлено через 14 часов 17 минут вверх

Приложение падает на другом компе - C++
ОС Ubuntu-64 linux. Написал, отладил и скомпилировал приложение на домашнем ноутбуке. Приношу на работу (там тоже Ubuntu-64) готовый...

Программа падает без printf - C++
Пишу простую программу, которая в цикле запускает другую, меняя один из аргументов от нуля до 700. Два одинаковых варианта, с printf...

22
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
30.06.2013, 15:36 #2
Почему бы не использовать стандартные контейнеры?
0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 04:04  [ТС] #3
скорость в 4-6 раз падает
0
Croessmah
Ушел
13768 / 8018 / 924
Регистрация: 27.09.2012
Сообщений: 19,740
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 04:07 #4
Скорее всего где-то попортили память, пытаясь записать не в свою память
0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 06:32  [ТС] #5
Я решил проверсти тесты и кое какие манипуляции скорей всего идеально будет всё таки воспозоваться стандарными средствами но пожертвовать скоростью. Если память портиться то почему из 10 раз 5 раз всё получается а 5 не получается софтине дойти до конца.
0
Croessmah
Ушел
13768 / 8018 / 924
Регистрация: 27.09.2012
Сообщений: 19,740
Записей в блоге: 3
Завершенные тесты: 1
01.07.2013, 06:35 #6
Цитата Сообщение от Ko Посмотреть сообщение
почему из 10 раз 5 раз всё получается
При ошибках в работе с памятью результат зависит от фазы луны и от великого рандома
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 07:26 #7
К проблеме отношения не имеет, но зачем:
C++
1
2
3
4
5
6
7
...
Fast_Cross_Сompatible = new unsigned int[Fast_Cross_Size_Max];
for (int i = 0; i < Fast_Cross_Size; i++)
{
       Fast_Cross_Сompatible[i] = temp_fast[i];
}
...
если можно просто:
C++
1
Fast_Cross_Сompatible = temp_fast;
0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 07:37  [ТС] #8
Луну исключаем)

Добавлено через 54 секунды
Вы хотите сказать что машина сама скопирует Fast_Cross_Сompatible = temp_fast; все значения ?

Добавлено через 1 минуту
я бы конечно стал бы использовать Stl вектор, но хочется очень понять почему идут завесы
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 07:39 #9
Цитата Сообщение от Ko Посмотреть сообщение
Вы хотите сказать что машина сама скопирует Fast_Cross_Сompatible = temp_fast; все значения ?
При чём здесь значения? Значения уже скопированы:
C++
1
2
3
4
5
unsigned int *temp_fast = new unsigned int[Fast_Cross_Size_Max];
for (int i = 0; i < Fast_Cross_Size; i++)
{
       temp_fast[i] = Fast_Cross_Сompatible[i];
}
Нужно только указатель на эту память заменить.
C++
1
Fast_Cross_Сompatible = temp_fast;
Теперь на эту память указывает Fast_Cross_Сompatible.
0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 07:41  [ТС] #10
Ребята спасибо что Вы помогаете)
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 07:42 #11
И естественно, delete[]temp_fast; после этого уже не делать.
0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 07:45  [ТС] #12
а ну я это делал именно так в самом начале когда начались завесы, потом переделал) сейчас сделал файл 6 гигов его подгружаю ни когда до конца программа не доходит, это положительно в поиске истины

Добавлено через 1 минуту
сейчас подифицируем и поглядим, жаль что в разных местах падает программа так было бы проще но менее интересно)

Добавлено через 1 минуту
а может стэка не хватать?
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 07:48 #13
Цитата Сообщение от Ko Посмотреть сообщение
а ну я это делал именно так в самом начале когда начались завесы, потом переделал)
А смысл было переделывать? То же самое, только дополнительное выделение, копирование и освобождение.

Добавлено через 42 секунды
Цитата Сообщение от Ko Посмотреть сообщение
а может стэка не хватать?
А где здсь стек? В куче память выделяется, но там тоже есть ограничение.
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 248
01.07.2013, 08:24  [ТС] #14
Хотел сделать тестовый блок как в программе, сделал, пару раз прогнал, прога не зависает тестовая, это уже интересно
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.07.2013, 09:04 #15
Посмотреть сколько ОС позволяет памяти выделить для программы. Выделять вектор и смотреть при каком размере будет исключение. У меня, при 4Гб памяти, не больше этого (1.2 Гб):
C++
1
std::vector <int> vec(330000000);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2013, 09:04
Привет! Вот еще темы с ответами:

Падает программа при использовании DLL - C++
Раньше писал DLL для одного приложения, теперь мне понадобилось его использовать в другом. Подключил lib, хедер и саму DLL положил рядом с...

Приложение падает при удалении синглтона - C++
Всем привет. Понадобилось мне использовать паттерн Singleton, реализовал я его так. UIManager* UIManager::GetInstance(){ ...

Неожиданно падает программа с библиотекой ffmpeg - C++
Простите, не знал, в какой раздел сунуть и сунил сюда, надеюсь, перенесут по адресу. Суть проблемы: Передается в функцию SDP запрос в...

Программа падает при чтении из файлов - C++
В C++ слова читаются из двух файлов.выбивает ошибку.Что можно сделать?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru