REALLOC com problemas
26/12/2007
0
Gente mais um probleminha daqueles do arco-da-tia-zéfa
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 [b:f45aab9fa6]REALLOC[/b:f45aab9fa6], que qdo chamado muitas vezes dá o problema...
ALGUÉM PODE ME AJUDAR, HEEEEELLLLLPPPPPPPPP
//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 [b:f45aab9fa6]REALLOC[/b:f45aab9fa6], que qdo chamado muitas vezes dá o problema...
ALGUÉM PODE ME AJUDAR, HEEEEELLLLLPPPPPPPPP
Docdoc
Curtir tópico
+ 0
Responder
Posts
27/12/2007
Massuda
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)