Erros de memoria - Access Violation - Dicas?

18/01/2005

0

Meu sistema está dando alguns erro sem aparente explicação:

Access violation at address 004547F9 in module ´PROGCONTROL.EXE´. Read of address FFFFFFFF

Access violation at address 0041B241 in module ´PROGCONTROL.EXE´. Read of address FFFFFFFF

Access violation at address 00000009. Write of address 033A79D1  

Access violation at address 72507365. Read of address 72507365

Access violation at address 00000013. Write of address 030A1A9C 

Access violation at address 00000009. Write of address 033A672D


São mensagens que as vezes aparecem e as vezes não. Alguem poderia me dar uma explicação melhor sobre isso para que eu possa procurar a solução.

Obrigado :roll:


Marbravo

Marbravo

Responder

Post mais votado

19/01/2005

O que não soluciona nada como remover da memoria?

Não entendi o que você quis dizer com ´remover da memória´... tanto faz Action = CaFree no OnClose ou Form.Release já que ambos destroem o form e, consequentemente, liberam a memória associada com o form.


Massuda

Massuda
Responder

Mais Posts

18/01/2005

Bruno_fantin

Esse erro quer dizer... ´Você está tentando acessar um objeto que não existe...´

Para arrumar isso você tem que rever todo o codigo do seu programa para ver o que está fazendo de errado...

Em algum lugar você está matando um objeto e depois está tentando usar ele...


Responder

18/01/2005

Massuda

Geralmente isso está relacionado com tentativas de utilizar objetos que já foram destruídos (automaticamente ou não) em algum do programa.

Para facilitar, tente determinar onde o erro está ocorrendo. Para isso:[list:8cae30a2d8][*:8cae30a2d8]marque as opções de debug em Project/Options/Compiler/Debugging[*:8cae30a2d8]dê um build (menu Project/Build) no seu programa[*:8cae30a2d8]inicie a execução do seu programa[*:8cae30a2d8]volte no Delphi[*:8cae30a2d8]no menu Search/Find Error, informe o endereço do erro (por exemplo 004547F9)[/list:u:8cae30a2d8]Com um pouco de sorte, o Delphi irá mostrar a linha problemática.


Responder

19/01/2005

Paulo_amorim

Olá

Lembrando que o acesso a objetos ainda não criados também dá esse erro. Assim, erros em eventos OnCreate , bem como acesso a objetos que devem ser instanciados em tempo de execução mas não o foram, gerarão esse erro.

Até+


Responder

19/01/2005

Marbravo

O erro é que estou usando o Vcl Skin e quando no onclose eu coloco para remover da memoria ( Freeandnil(Self); ) ele da o erro. Debugando vi que quando eu destruia ele procurava um arquivo que não tenho WinSkinForm.pas...

e agora?

O que fazer?

Com Action := CaFree funciona mas com Freeandnil(Self) da erro...


Solução?

Dicas?

Agradeço desde já


Responder

19/01/2005

Marbravo

O erro é que estou usando o Vcl Skin e quando no onclose eu coloco para remover da memoria ( Freeandnil(Self); ) ele da o erro. Debugando vi que quando eu destruia ele procurava um arquivo que não tenho WinSkinForm.pas...

e agora?

O que fazer?

Com Action := CaFree funciona mas com Freeandnil(Self) da erro...


Solução?

Dicas?

Agradeço desde já


Responder

19/01/2005

Paulo_amorim

Olá

Ele está tentando se destruir enquanto está dentro de um evento dele mesmo! Simulei aqui e também deu AV

Tente colocar a liberação no Form que chamou esse seu form, e não dentro dele mesmo:
SeuForm := TSeuForm.Create(Self);
SeuForm.ShowModal;
SeuForm.Free;


Espero que ajude
Até+


Responder

19/01/2005

Massuda

Se seu form não for modal e você precisa que seu form se auto-destrua (´suicídio´), use a procedure TForm.Release ao invés de chamar TForm.Free.


Responder

19/01/2005

Marbravo

Eu estou usando formularios MDI (MDIChild e MDIForm) por isso não posso usar ShowModal e estou usando Action := CaFree no Onclose, que creio eu seja a mesma coisa que Form.Release...

O que não soluciona nada como remover da memoria?


?
Obrigado


Responder

19/01/2005

Aroldo Zanela

Colega,

A forma que está utilizando no OnClose do formulário filho (MDI) está correta, ou seja, Action := caFree. Entretanto, acredito que o problema esteja ocorrendo antes disso e como já mencionado, está ocorrendo em face de tentar utilizar um objeto antes de ser criado ou após ter sido liberado. Pode adicionar um fragmento do código para verificarmos melhor?


Responder

19/01/2005

Aroldo Zanela

Colega,

Agora que li completamente todas as mensagens, acredito que o problema seja no componente de SKIN. Porém, só para ratificar, o uso de caFree no OnClose de formulários MDI está correto.


Responder

20/03/2005

Domingosafn

Como posso verificar se um objeto existe na memória, antes de acessá-lo, evitando o erro? No meu caso são índices de vetores, preciso saber se há threads alocadas neles.

Valeu.


Responder

10/07/2018

Amauri Alves

Bom dia,
Aproveitando o post gostaria de colocar uma situação que pelo menos para mim é inovadora: Ele está me dando erro de violação de acesso antes de executar qualquer coisa no sistema, coloquei o projeto inteiro para debugar, ele me da este erro antes de qualquer create, antes de executar qualquer linha do projeto e em função disto não consigo ter ideia de onde pode estar este erro, alguém já passou por algo semelhante?
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar