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

Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы? http://www.cyberforum.ru/cpp-beginners/thread382676.html
Друзья! Есть какой-нибудь способ без if-else? Ну то есть вот код: #define odin 1 ////////////всякий код int f () {retutn 1;}; #include <stdio.h> ////////////////всякий код
C++ Строки и стек Задача такова: пользователь с клавиатуры вводит строку, после введения запускается обработчик, который удаляет из этой строки символ "t". Обработанная строка заносится в стек. По введенной команде ret на экран выводится последняя обработанная строка. Основные проблемы с занесением строки в стек и извлечением из него целой строки. помогите с кодом, пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread382658.html
C++ Представление в памяти компьютера типа double
нужна помощь в представление ВПК (в памяти компютера) тип данних double например нам дано такое: double y = -4.8e1 и хочем чтоб компилятор сделал такое: long w1 = *reinterpret_cast<long*>(&y)+33; я знаю как представляеться ВПК float, а так же знаю, что double примерно так же как и float представляеться ВПК подскажите алгоритм представление ВПК тип данних double!(делать мое задание не...
Подсчитать количество различных пар букв C++
Помогите решить задачу, вернее переделать))) Во введенном слове подсчитать количество различных пар букв. ( например, в слове вавасавасd –5 различных пар букв). Нашёл на форумах такую же на С++, а нужно на Си. #include <map> { char str; cout<<RUS("Введите слово: "); cin.getline(str, 100);
C++ Подскажите с чего начать. http://www.cyberforum.ru/cpp-beginners/thread382614.html
Доброго времени суток. По работе появилась необходимость работать с С.До этого изучал Java. Когда начинал Java сразу сел за NetBeans, и упустил некоторые базовые вещи которые за меня делала IDE, потом довольно трудно пытался понять основы.Сейчас не хочу наступить на те же грабли. Подскажите, пожалуйста, какую-нить простую IDE, и литературу. Спасибо за внимание.
C++ Динамические массивы Объясните пожалуйста что такое динамические массивы. Это массивы с не константным количеством элементов? Если так, то как их объявлять? подробнее

Показать сообщение отдельно
Bers
Заблокирован
13.11.2011, 01:34
iron-mik , сейчас найдём)

Я колебался вводить данные для этих компаний)
Реально, на этапе тестирования и разработки - сделали бы хотя бы времянку, которая сама бы быстро забивала все данные. Что б не приходилось вручную все набивать по новой каждый раз.

Добавлено через 18 минут
ошибку пока не нашёл. Но нашёл утечку памяти:

C++
1
2
3
4
5
6
7
8
void CreatCompInfo(sCompany* comp, int i)
{
        //много кода
        comp[i].branch = new sBranch[countBr]; 
        //А кто будит отвечать за чистоту и порядок?
 
       //много кода
}
Добавлено через 15 минут
Всё! Нашёл ошибку. Я сам неоднократно горел на подобных типах ошибок. Они коварные.

Вот эта ошибка очень хорошо иллюстрирует неочевидность человечьей логики.

Сначала напишу что конкретно было не так. Потом опишу почему именно не так:

Вот исправленный вариант функции
C++
1
2
3
4
void InputCompany(sCompany* &comp, int* countCom)
{   
       //тело функции
}
Обрати внимание, на первый аргумент функции.
Это - не указатель, это - ссылка на указатель.

Чем отличается ссылка на указатель от указателя?

Аргументы функций всегда дублируются.
Внутри функции участвуют не оригинальные аргументы, а их копии. ВСЕГДА

Но Если ты изменишь значение ссылки - изменится значение оригинала, на которого она указывает.

У тебя внутри функции существовала копия указателя.
Ты убивал данные по этому указателю, а потом пересоздавал массив.
При этом ты модифицировал копию указателя, а не оригинал.

После чего функция возвращала управление вызывающей стороне, где по прежнему
продолжал сушествовать оригинальный указатель, который понятия не имеет, что данные были перемещены по новому адресу. Он попрежнему указывает уже на чужую память.


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