Array
(
)

REALLOC com problemas

Docdoc
   - 26 dez 2007

Gente mais um probleminha daqueles do arco-da-tia-zéfa

#Código


//PTable ptb é o pointer para a tabela
//void* pData é o pointer para o registro
//int size é o tamanho do registro em bytes

int WINAPI Inserir(PTable ptb, void* pData, int size)
{
int i;
pchar p=0;

if (ptb) {

if (size != ptb->tfh.wRecSize)
return ERRO_REC_SIZE;

i = _msize(ptb->pRegistros) + ptb->tfh.wRecSize;

p = (pchar) realloc( ptb->pRegistros,i);

if (!p)
return ERRO_REC_COPY;

ptb->pRegistros = p;

p = p + (_msize(p) - size);

ptb->AtualRecord = memcpy(p, pData, size);

if (!ptb->AtualRecord)
return ERRO_REC_COPY ;

return ERRO_OK;

}


return ERRO_TABLE_UNKNOWN;

}


Aparentemente o código corre bem. É uma rotina para inserção do registro na tabela

(Olha só pra explicar: To fazzendo um gerenciador de base de dados e essa rotina insere o registro na tabela que está em memória)

Bem, qdo chamo essa rotina num looping, por exemplo, ela roda bem até ao 100º ciclo, a partir daí da um erro access violation na parte do código que tem REALLOC.

Mas qdo chamo a rotina de forma individual, para insereir apenas um registro ela vai super bem.

O problema é o REALLOC, que qdo chamado muitas vezes dá o problema...

ALGUÉM PODE ME AJUDAR, HEEEEELLLLLPPPPPPPPP


Massuda
   - 27 dez 2007

Pelo código que você postou, acho que a única maneira de ocorrer isso seria ptb->pRegistros ser um ponteiro inválido não-nulo.