Когда я освобождаю свою память в этой части кода... я получаю сообщение об ошибке: :free(): неверный следующий размер (быстро)
int insertRecord(char *record,int recordSize,long dataPageNumber)
{
datapage *dataPage=(datapage *)malloc(sizeof(datapage));
readPage(dataPage,dataPageNumber);
slotentry slot;
//for checking and freeslotnumber storage
int freeSlotNumber=-1;
int negativeFlag=0;
int freeFlag=0;
if(recordSize+sizeof(slotentry)<=dataPage->cfs)
{
slot.slotsize = recordSize;
slot.slotaddress = dataPage->cfsptr;
dataPage->cfs -= (recordSize+sizeof(slotentry));
dataPage->cfsptr += recordSize;
dataPage->slotcount++;
memcpy(&dataPage->data[slot.slotaddress],record,recordSize);
free(dataPage);
return 1;
}
После выполнения free(dataPage) я получаю указанную выше ошибку...
typedef struct
{
int pagenumber;
int priority;
long dirPageNo;
long cfs;
int cfsptr;
int slotcount;
char data[1];
} datapage;
typedef struct
{
int slotaddress;
int slotsize;
} slotentry;
Я сохранил бесплатную (dataPage) перед memcpy, она работает нормально, но после memcpy она не работает ... и показывает ошибку .... Может ли кто-нибудь помочь мне в этой проблеме ...
malloc
, и в лучшем случае сбивает с толку кого-то вроде OP, чья программа потерпела крах. Хорошо написанное сообщение об ошибке должно сообщать о чем-то вроде фатальной ошибки: это приложение выполнило запись за пределами памяти и повредило внутреннее состояние распределителя памяти. - person R.. GitHub STOP HELPING ICE   schedule 06.11.2012