Проблема с указателем на структуру.
Проблема такая, я создаю структуру и указатель на нее и хочу присвоить значение переменной данной структуры, но при этом в процессе выполнения программы выдается сообщение:
"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; //На этой строке выдается сообщение
{
int Var;
};
MyStruct* tStr;
tStr = new MyStruct;
tStr->Var = 10;
...
delete tStr;
Цитата:
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; //На этой строке выдается сообщение
Доброго времени суток всем.
Проблема такая, я создаю структуру и указатель на нее и хочу присвоить значение переменной данной структуры, но при этом в процессе выполнения программы выдается сообщение:
"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;
Цитата:
Originally posted by Green
А для чего такие манипуляции с типами (typedef)?
Не проще ли так?
А для чего такие манипуляции с типами (typedef)?
Не проще ли так?
Хотелось сделать тип указателей, что бы потом писать меньше.
Обидно, Builder'a под рукой сейчас нет... :{
А можно ли обойтись без "new"?
Цитата:
Originally posted by Gerret
Хотелось сделать тип указателей, что бы потом писать меньше.
Обидно, Builder'a под рукой сейчас нет... :{
А можно ли обойтись без "new"?
Хотелось сделать тип указателей, что бы потом писать меньше.
Обидно, Builder'a под рукой сейчас нет... :{
А можно ли обойтись без "new"?
Можно, но нужно быть аккуратным со временем жизни экземпляра.
MyStr Str;
NewStr tStr = &Str;