Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118

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

03.12.2012, 19:10. Показов 1206. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня вопрос по 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." Можете подсказать, что делать? Искал похожие вопросы-только в одном случае сказали, что дело в "скрытых" ошибках(те, что в отладочной версии не ловятся). Что это за ошибки? Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2012, 19:10
Ответы с готовыми решениями:

Debug и Release сборки в Visual Studio
Я начал писать проект на c++ с использованием sfml. При сборке тестовой программы в версс debug потребление памяти составляет примерно 22...

Как создать release проекта в MS Visual Studio?
Здравствуе. У меня Visual 2013 Компилирую простую программку, ставлю release #include &quot;stdafx.h&quot; #include...

C++ Visual Studio 2017 режим Debug и Release
C++ Visual Studio 2017 проблемы с режимом Debug и Release Почему в режиме дебага все нормальное, а в режиме релиза не хочет считать...

6
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
03.12.2012, 19:24
Цитата Сообщение от PazDim Посмотреть сообщение
Что это за ошибки? Заранее спасибо
скорее всего вылезли за пределы выделенной памяти (за пределы массивов).
0
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118
03.12.2012, 19:34  [ТС]
В дебаг-версии не вылезал... Вылез из-за переменной MaxX, которая судя по всему не инициализируется
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
03.12.2012, 19:38
Цитата Сообщение от PazDim Посмотреть сообщение
В дебаг-версии не вылезал... Вылез из-за переменной MaxX, которая судя по всему не инициализируется
Пройдитесь в отладчике с такими же данными, при которых вылетает ошибка, и посмотрите, в какой строчке вылетает ошибка, а так же содержание переменных.
0
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118
03.12.2012, 20:52  [ТС]
Пробовал, при таких же данных. В строке 23 MaxX=0(в Debug). В релиз версии посмотреть не получается, потому что этой переменной НЕТ. Почему-не знаю. При попытке установить точку трассировки в окне вывода отображается, что не найден MaxX(это в релиз версии, в дебаг версии выводится значение MaxX). Думаю, что выход за пределы массива buf происходит из-за того, что в MaxX лежит что-нибудь типа -24521... Повторюсь, в версии debug все работает правильно

Добавлено через 16 минут
Забыл добавить(надеюсь, некритично): проект Win32, использует MFC
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
03.12.2012, 20:55
Цитата Сообщение от PazDim Посмотреть сообщение
). В релиз версии посмотреть не получается, потому что этой переменной НЕТ.
Тогда попробуйте её объявление вынести из циклов в начало функции.
1
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118
03.12.2012, 22:00  [ТС]
Без толку . В релиз версии она просто не существует...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2012, 22:00
Помогаю со студенческими работами здесь

Написать программу. Задания нужно выполнять на языке Visual C++ в среде Microsoft Visual Studio 2008
Можете написать программу? Задание по номером 3.24 (2 рисунок).

Несовместимость visual c++ 6.0 и visual studio 2008
почему правильно гаписанная программа в visual c++ 6.0 не работает в visual studio 2008 , а именно #include &lt;iostream&gt; ...

Как в Visual Studio задать имя файла при запуске Release через Ctrl + F5?
Я переименовал выходной файл в режиме Release в свойствах Linker-&gt;General-&gt;Output, но при попытки из студии как обычно запустить...

Разработка консольного приложения в среде Visual C# Studio 2008
Разработать консольное приложение в среде Visual C# Studio 2008 в соответствии со следующим заданием: В программе реализован массив (до 5...

передача данных из одного приложения в другое на С# в Visual studio 2008
Меня в частности интересует следующее - запущены две странички , когда я закрываю одну , во второй происходит обнавление страницы, на мой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru