Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 15:57   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Получаю ошибку Access violation at adress

Во время набора программы и компиляции получаю ошибку
Цитата:
Access violation at adress 00С3F749 in module 'COMP32P.DLL'. Write to address 08030180
. В гугле ответ на свою проблему не нашел.
Код такой:
Код:
//P2-16 - динамическое распределение памяти
#include<iostream.h>
void main()
{
 int *i;
 i=new int(1);
 cout << "\n*i" << *i << "\t i=" << i; // эта строчка подсвечивается красным
 i=new int(5);
 cout << "\t*i" << *i << "\t\t i=" << i;
 i=new int(2**1);
 cout << "\n*i=" << *i << "\t i=" << i;
 i=new int(2**i);
 cout << "\t*i" << *i << "\t\t i=" << 1;
 delete i;
 cout << "\n После освобождения памяти:";
 cout << "\n*i" << *i << "\t i=" << i;
 delete i; // Некорректное применение операции
 cout << "\t*i=" << *i << "\t i=" << i;

 system("pause");
}
fs444 вне форума Ответить с цитированием
Старый 14.12.2009, 16:58   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

А вы читали что писали ?
Цитата:
cout << "\n После освобождения памяти:";
а потом вы же и пишите
Цитата:
delete i; // Некорректное применение операции
Ну ии ? уже убили i, а потом как "контрольный" чтоли в голову ?
и пожалуй перед тем как писать снова new int() надо бы предыдущий i убить. а там где красным наводит, то пишите не
Код:
<< i;
а
Код:
<< (int)i;
думаю поможет
BOBAH13 вне форума Ответить с цитированием
Старый 14.12.2009, 18:15   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Странная программа, сначала мы трижды выделяем память, затем мы дважды освобождаем одно и тоже место. В результате мы умеем утечку, 2 переменные вы так и не удалили, и попытку дважды удалить одно и тоже (по идее это не правильно.)
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 15.12.2009, 09:14   #4
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
Странная программа
Хех, да.
Во-первых, я ее неправильно переписал (должно быть 2**i, а я 2**1 написал).
Во-вторых, автор, как мне объяснили, Подбельский (автор книги, из которой взят код) хотел показать, как вылетает программа при двойном удалении участка памяти. Об этом и комментарии говорят, а я не разглядел))
Вот скрин кода из книги:


Кстати, если я правильно понял, *i идентификатор переменной i. Чем идентификатор отличается от самой переменной?
И еще. У Подбельского вывод программы выглядит так (это не весь вывод):
*i=1 i=0x91790004
А у меня:
*i=1 i=9460480
Почему я отличаюсь от него?

Последний раз редактировалось fs444; 15.12.2009 в 09:23.
fs444 вне форума Ответить с цитированием
Старый 15.12.2009, 09:46   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Почему я отличаюсь от него?
Тяжолый вопрос. Может поизучаите и не будите флудить. Я даже вопроса толком не понял.
BOBAH13 вне форума Ответить с цитированием
Старый 15.12.2009, 10:16   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
И еще. У Подбельского вывод программы выглядит так (это не весь вывод):
*i=1 i=0x91790004
А у меня:
*i=1 i=9460480
Почему я отличаюсь от него?
Учитывая количество различных факторов, вопрос равноценен следующему:
Код:
int i = random(10000);
std::cout << i;
Почему у него 21582, а у меня 9835?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 15.12.2009, 12:24   #7
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Хех, остряки))
Цитата:
вопрос равноценен следующему
Цитата:
Может поизучаите
А я чем тут, по вашему, занимаюсь?
Мне на другом форуме сказали, что Подбельский явно не тянет сейчас, поэтому я решил читать Страуструпа. Как считаете, правильная мысль?

Последний раз редактировалось fs444; 15.12.2009 в 14:03.
fs444 вне форума Ответить с цитированием
Старый 15.12.2009, 15:47   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от fs444 Посмотреть сообщение
Хех, остряки))


А я чем тут, по вашему, занимаюсь?
Мне на другом форуме сказали, что Подбельский явно не тянет сейчас, поэтому я решил читать Страуструпа. Как считаете, правильная мысль?
Понятия не имею... я раз прочитал (без практики, как простую книгу) Архангельский Delphi 7. Дальше практика, а потом как то сам незаметил оказал что знаю C++ :D щас C++. Так что тут помоему мало "читать". Берите и изучайте - а именно, писать, писать, писать.
BOBAH13 вне форума Ответить с цитированием
Старый 15.12.2009, 22:05   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Страуструпа читайте, он плохому не научит!
А программу прогоните еще раз - она вам уже другое число выдаст, на вашем же компе, в вашей же системе...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 16.12.2009, 08:04   #10
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию

Цитата:
Так что тут помоему мало "читать". Берите и изучайте - а именно, писать, писать, писать.
Ну это то понятно. Я сейчас хочу определиться, какую книгу сначала читать, если я изучаю с++ почти с нуля.

Насчет адресов понял=)
fs444 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation at address UnChanter Общие вопросы Delphi 22 07.02.2011 11:00
простой код...почему выдает ошибку access violation at address!?? sleevman Помощь студентам 2 28.10.2009 20:47
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55