![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
gagar |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Компилятор: Visual Studio C++ Express Edition 2008
В чем проблема: программа начинает выполняться и вылетает Access Violation. Исходный код (на том месте, где вылетает программа):
Вылетает в 35 строке! Что пишет отладчик:
Что в дизасемблере:
Стек вызова:
В чем тут может быть проблема??? |
||||||||
|
|||||||||
gagar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Проблема решилась!
Я после создания потока, внутри функции, выполняющейся в потоке инициализировал класс, в котором есть поле данных размером 2048000 байт!!!. Которое к тому же передавалось в функцию через стек... Естественно, в такой ситуации происходило переполнение стека. Сейчас буду переписывать этот кусок кода "по человечески". Меня смущает только одно... почему этот косяк не обнаружился компилятором? Он вызывал переполнение стека при вызове функции CreateThread, а не позже, при создании класса, или даже при его использовании. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |