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

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

03.12.2012, 19:10. Показов 1184. Ответов 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
03.12.2012, 19:24
Цитата Сообщение от PazDim Посмотреть сообщение
Что это за ошибки? Заранее спасибо
скорее всего вылезли за пределы выделенной памяти (за пределы массивов).
0
5 / 5 / 1
Регистрация: 08.08.2011
Сообщений: 118
03.12.2012, 19:34  [ТС]
В дебаг-версии не вылезал... Вылез из-за переменной MaxX, которая судя по всему не инициализируется
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru