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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2013, 14:36   #1
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
Восклицание Ошибка Access Violation Read of address 00000001

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

Unit1.cpp
Код:
#include <vcl.h>
#include <iostream>
#include <Unit2.h>
#pragma hdrstop

#pragma argsused
int main(int argc, char* argv[])
{
        using namespace std;
        untime* summary;
        int sum=summary->addab();
        cout<<sum;
        cin>>sum;
        return 0;       
}
Unit2.cpp
Код:
#pragma hdrstop

#include "Unit2.h"

#pragma package(smart_init)

using namespace std;

untime::untime()
{
b = 10;
a = 20;
}

int untime::addab()
{
c = a+b;
return c;}
}

Unit2.h
Код:
#ifndef Unit2H
#define Unit2H
#include <iostream>
class untime{
  public:
  int a,b,c;
  untime::untime();
  int untime::addab();
};

#endif
Baburek вне форума Ответить с цитированием
Старый 29.05.2013, 15:47   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Надо проинициализировать указатель, прежде чем его использовать:
untime* summary; // Чему равен указатель?
int sum=summary->addab();

Либо вообще не использовать указатель:
untime summary;
int sum = summary.addab();
waleri вне форума Ответить с цитированием
Старый 14.06.2013, 12:32   #3
Baburek
Форумчанин
 
Аватар для Baburek
 
Регистрация: 12.12.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Надо проинициализировать указатель, прежде чем его использовать:
untime* summary; // Чему равен указатель?
int sum=summary->addab();

Либо вообще не использовать указатель:
untime summary;
int sum = summary.addab();
Да, спасибо! Действительно нужно не стесняться инициализировать.
Код:
untime *summary = new untime();
Спасает
Baburek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Arktos1995 Общие вопросы Delphi 5 12.12.2012 22:33
Access violation at address XXXXXX in module 'YYYYYY'. Read of address ZZZZZZ' nik-kang Помощь студентам 0 18.06.2012 22:22
Ошибка: "Access violation at address 0045E503 in module 'Project1.exe'. Read of address 00316777. Katexxxsa Общие вопросы Delphi 1 03.10.2011 23:16
Ошибка "Access violation at address 004043A8 in module 'Project1.exe'. Read of address 00FF5A53." ms.Karishka Общие вопросы Delphi 6 14.04.2011 22:18
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Fen1x Общие вопросы Delphi 8 13.10.2007 20:13