WildSery писал(а):SAV писал(а):... попробовал по разному и realloc пробовал

Как именно пробовал? Вот так что ли:
Код: Выделить всё
void __fastcall PackBuffer(void *&SourceBuf, int &SourceLen)
{
try
{
SourceBuf = realloc(SourceBuf, SourceLen-1);
}
catch (Exception &E)
{
ShowMessage("PackBuffer error\n"+E.Message);
Form1->pFIBTransaction1->Rollback();
}
}
Именно так и пробовал... поразбирался ещё: в общем так
1) У меня включен CodeGuard вот лог ошибки
Error 00126. 0x310000 (Thread 0x12A9C):
Bad parameter: A bad memory block (0x9C3550) has been passed to the function.
realloc(0x009C3550, 0x129 [297])
Call Tree:
0x00402514(=Project1.exe:0x01:001514) c:\Program Files\Borland\CBuilder6\Projects\FibBlobFilter\Unit1.cpp#50
0x004AE5E6(=FIBPlus_CB6.bpl:0x01:07D5E6)
0x0043AE96(=FIBPlus_CB6.bpl:0x01:009E96)
0x0045AEA3(=FIBPlus_CB6.bpl:0x01:029EA3)
0x0044C478(=FIBPlus_CB6.bpl:0x01:01B478)
0x0044C5CE(=FIBPlus_CB6.bpl:0x01:01B5CE)
2) Exceptioon о неосвобождённой или неправильного обращения к памяти не возникает,может это просто предупреждение гварда? Или всё таки есть гдето баг или неправильное использование realloc?