Форум программистов, компьютерный форум CyberForum.ru

Visual Studio 2008 Release - версия приложения, не объявляется переменная - C++

Восстановить пароль Регистрация
 
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
03.12.2012, 19:10     Visual Studio 2008 Release - версия приложения, не объявляется переменная #1
Здравствуйте, у меня вопрос по Release-версии проекта.
Есть проект, отладочная версия компилируется и работает нормально. Релиз версия компилируется, но в процессе работы возникает ошибка. Ошибка возникает при попытке доступа к элементу массива через индекс. Индекс-переменная. Как оказалось, в релизной версии ее вообще нет... Вот код функции:
Кликните здесь для просмотра всего текста


C++ (Qt)
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
TCHAR buf[200]={0};//Для сохранения строки из pLBField
    pLBField->GetText(y,buf);//Чтение строки
    pLBField->DeleteString(y);//Удаление строки
    for(int k=x;(buf[k]==' ')||(buf[k]=='\0');k--)//Очистка места для строки матрицы
        buf[k]=' ';
    buf[x]=name;//Запись имени матрицы
    pLBField->InsertString(y,buf);//Сохранение получившейся строки
    for(int i=y+1;i<y+m+1;i++)//Запись строк матрицы
    {
        for(int v=0;v<200;v++)
            buf[v]=0;
        pLBField->GetText(i,buf);//Чтение строки
        pLBField->DeleteString(i);//Удаление строки
        TCHAR BufDouble[255]={0};//Строка для элемента матрицы
        for(TInd k=0;k<n;k++)//Отображение всех элементов матрицы, находящихся на строке i-y-1
        {
            short MaxX=x+k*GetMaxElemWidth()+k;//Начальная позиция для отображения строки элементов матрицы
            sprintf (BufDouble, "%f",Matrix[i-y-1][k]);//Преобразование элемента матрицы в строку
            for(int q=MaxX+x;(buf[q]==' ')||(buf[q]=='\0');q--)//Очистка местя для элемента матрицы
                buf[q]=' ';
            for(short l=0;l<GetDoubleLength(Matrix[i-y-1][k],Accuaracy);l++)//Запись элемента матрицы в строку buf
                buf[MaxX++]=BufDouble[l];//-----------------------Здесь вылет в релизной версии
        };
        pLBField->InsertString(i,buf);//Сохранение получившейся строки
    };

Как мне кажется, все дело в переменной MaxX(Объявляется в цикле for(TInd k=0;k<n;k++) ). В отладочной версии она есть. В релизной версии ее нет.

Появляется такая ошибка: "Unhandled exception at 0x0040355a in MatrixWnd.exe: 0xC0000005: Access violation writing location 0x00131644." Можете подсказать, что делать? Искал похожие вопросы-только в одном случае сказали, что дело в "скрытых" ошибках(те, что в отладочной версии не ловятся). Что это за ошибки? Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 19:10     Visual Studio 2008 Release - версия приложения, не объявляется переменная
Посмотрите здесь:

C++ [C#] Visual studio 2008 анимация
C++ Visual Studio 2008 Prof
Microsoft Visual studio 2008 C++
C++ Visual studio 2008 C++
C++ Как в Visual Studio задать имя файла при запуске Release по средствам Ctrl + F5 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
03.12.2012, 19:24     Visual Studio 2008 Release - версия приложения, не объявляется переменная #2
Цитата Сообщение от PazDim Посмотреть сообщение
Что это за ошибки? Заранее спасибо
скорее всего вылезли за пределы выделенной памяти (за пределы массивов).
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
03.12.2012, 19:34  [ТС]     Visual Studio 2008 Release - версия приложения, не объявляется переменная #3
В дебаг-версии не вылезал... Вылез из-за переменной MaxX, которая судя по всему не инициализируется
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
03.12.2012, 19:38     Visual Studio 2008 Release - версия приложения, не объявляется переменная #4
Цитата Сообщение от PazDim Посмотреть сообщение
В дебаг-версии не вылезал... Вылез из-за переменной MaxX, которая судя по всему не инициализируется
Пройдитесь в отладчике с такими же данными, при которых вылетает ошибка, и посмотрите, в какой строчке вылетает ошибка, а так же содержание переменных.
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
03.12.2012, 20:52  [ТС]     Visual Studio 2008 Release - версия приложения, не объявляется переменная #5
Пробовал, при таких же данных. В строке 23 MaxX=0(в Debug). В релиз версии посмотреть не получается, потому что этой переменной НЕТ. Почему-не знаю. При попытке установить точку трассировки в окне вывода отображается, что не найден MaxX(это в релиз версии, в дебаг версии выводится значение MaxX). Думаю, что выход за пределы массива buf происходит из-за того, что в MaxX лежит что-нибудь типа -24521... Повторюсь, в версии debug все работает правильно

Добавлено через 16 минут
Забыл добавить(надеюсь, некритично): проект Win32, использует MFC
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
03.12.2012, 20:55     Visual Studio 2008 Release - версия приложения, не объявляется переменная #6
Цитата Сообщение от PazDim Посмотреть сообщение
). В релиз версии посмотреть не получается, потому что этой переменной НЕТ.
Тогда попробуйте её объявление вынести из циклов в начало функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 22:00     Visual Studio 2008 Release - версия приложения, не объявляется переменная
Еще ссылки по теме:

Visual Studio 2008 C++
Как создать release проекта в MS Visual Studio? C++

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

Или воспользуйтесь поиском по форуму:
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
03.12.2012, 22:00  [ТС]     Visual Studio 2008 Release - версия приложения, не объявляется переменная #7
Без толку . В релиз версии она просто не существует...
Yandex
Объявления
03.12.2012, 22:00     Visual Studio 2008 Release - версия приложения, не объявляется переменная
Ответ Создать тему
Опции темы

Текущее время: 08:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru