Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с указателем на структуру.

451
22 января 2003 года
Gerret
51 / / 20.05.2000
Доброго времени суток всем.
Проблема такая, я создаю структуру и указатель на нее и хочу присвоить значение переменной данной структуры, но при этом в процессе выполнения программы выдается сообщение:

"Project ___.exe raised exception class EAccessViolation with message 'Access violation at address ..."

Не могу понять почему.
Структура такая:

typedef struct MyStruct
{
int Var;
}MyStr;
typedef MyStr *NewStr;

NewStr tStr;
tStr->Var = 10; //На этой строке выдается сообщение
1.7K
22 января 2003 года
Mark
114 / / 21.11.2002
struct MyStruct
{
int Var;
};
MyStruct* tStr;
tStr = new MyStruct;
tStr->Var = 10;

...

delete tStr;
3
22 января 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Gerret
Доброго времени суток всем.
Проблема такая, я создаю структуру и указатель на нее и хочу присвоить значение переменной данной структуры, но при этом в процессе выполнения программы выдается сообщение:

"Project ___.exe raised exception class EAccessViolation with message 'Access violation at address ..."

Не могу понять почему.
Структура такая:

typedef struct MyStruct
{
int Var;
}MyStr;
typedef MyStr *NewStr;

NewStr tStr;
tStr->Var = 10; //На этой строке выдается сообщение



Не создан екземпляр структуры.
Т.о. указательесть, но он никуда не указывает, точнее, указывает в никуда.
Правильно будет:

MyStr Str;
NewStr tStr = &Str;

либо

NewStr tStr = new MyStr;
.......
delete tStr;

А для чего такие манипуляции с типами (typedef)?
Не проще ли так?

struct MyStr
{
int Var;
};

MyStr *NewStr = new MyStr;
.......
delete tStr;

451
22 января 2003 года
Gerret
51 / / 20.05.2000
Цитата:
Originally posted by Green

А для чего такие манипуляции с типами (typedef)?
Не проще ли так?



Хотелось сделать тип указателей, что бы потом писать меньше.
Обидно, Builder'a под рукой сейчас нет... :{
А можно ли обойтись без "new"?

3
22 января 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Gerret


Хотелось сделать тип указателей, что бы потом писать меньше.
Обидно, Builder'a под рукой сейчас нет... :{
А можно ли обойтись без "new"?



Можно, но нужно быть аккуратным со временем жизни экземпляра.

MyStr Str;
NewStr tStr = &Str;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог