Aractan |
Отправлено: 17.06.2005, 07:49 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
arithmetic pointer underrun что это значит и почему может быть?
На ровном месте глючит
*Data=new char[6002];
char* aData=reinterpret_cast(*Data);
TCommand Command(reinterpret_cast(*Data));
Command.Head.Command=MI_RUN;
Command.Head.Signature=SIGNATURE;
Command.Head.BodyLen=0;
int Result=fCommandExchanger->Exchange(&Command);
Size=Command.Head.BodyLen;
short lkError=*((short*) (&(( (char*) (*Data) )[Size-2] ) ) );
if(lkError){
TMyEvent* pMyEvent = new TMyEvent(this, //вот тут ошибка возникает
etInternalMessage,
ntNoNotification,
"Бла-бла-бла "+lkError
);
if(fManager) fManager->ProcessEvent(pMyEvent);
else throw Exception("Debug: fManager doesn't set. uP2MHardWare::P2MHardWare::Run");
}
return Result;
|
|
olegenty |
Отправлено: 17.06.2005, 08:38 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
this на что указывает?
|
|
Aractan |
Отправлено: 17.06.2005, 13:24 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Class HW
{
public:
SendCommand(TCommand* Command);
};
HW::SendCommand(TCommand* Command)
{
// тут то что я запостил в первом сообющении
}
т.е. this указывает на некоторый мой класс |
|
Aractan |
Отправлено: 17.06.2005, 13:27 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
вот так если уж совсем точно
CODE |
class HW
{
public:
int SomeAction(void** Data);
};
int HW::SomeAction(void** Data)
{
*Data=new char[6002];
char* aData=reinterpret_cast(*Data);
TCommand Command(reinterpret_cast(*Data));
Command.Head.Command=MI_RUN;
Command.Head.Signature=SIGNATURE;
Command.Head.BodyLen=0;
int Result=fCommandExchanger->Exchange(&Command);
Size=Command.Head.BodyLen;
short lkError=*((short*) (&(( (char*) (*Data) )[Size-2] ) ) );
if(lkError){
TMyEvent* pMyEvent = new TMyEvent(this, //вот тут ошибка возникает
etInternalMessage,
ntNoNotification,
"Бла-бла-бла "+lkError
);
if(fManager) fManager->ProcessEvent(pMyEvent);
else throw Exception("Exception");
return Result;
} |
2Aractan пользуйтесь тэгами [CODE]
2Модератор ок, спасибо
Отредактировано Aractan — 17/06/2005, 13:51 |
|
Gedeon |
Отправлено: 17.06.2005, 13:59 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
CODE |
//...
Command.Head.BodyLen=0;
//..
Size=Command.Head.BodyLen;
short lkError=*((short*) (&(( (char*) (*Data) )[Size-2] ) ) ); //??????????
|
или что-то скрыто за
CODE |
int Result=fCommandExchanger->Exchange(&Command); | ?
|
|
Aractan |
Отправлено: 18.06.2005, 13:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
CODE |
TMyEvent* pMyEvent = new TMyEvent(this, //вот тут ошибка возникает
etInternalMessage,
ntNoNotification,
"Бла-бла-бла "+lkError /////// !!!!!!!!!!!! вот тут косяк !!!!!!!!!!!!
); |
т.е. судя по всему при выделении памяти происходит глюк из-за неправильн каких-то особенностей преобразования типов.
(AnisString)"Бла-бла-бла "+ (short)lkError — получается так нельзя делать.
AnsiString ErrorNo(lkError);
(AnisString)"Бла-бла-бла "+ ErrorNo — Так надо, ну или прямо там привести к AnsiString.
Отредактировано Aractan — 18/06/2005, 14:00 |
|