1) A estrutura estática PTR<CLASS>ClASS::Ptr é criada; 2) a classe é criada, nova CLASSE; executa a construtora CLASSE()e CLASSE::Ptr é atribuído Null 3) CLASSE::O valor de Tmp é actualizado pelo ponteiro para nova CLASSE 4) Elimina PTR<CLASS> structure CLASS::Ptr; executa destruidor, tenta apagar CLASS::Ptr (é Null)
CLASSE::Tmp ainda contém lixo, não um endereço de objecto.
Obrigado! De alguma forma não reparei nesta obviedade.
Sergey Dzyublik: 1) Uma estrutura estática PTR<CLASS>ClASS::Ptr é criada; 2) Cria uma classe, nova CLASSE; gere CLASSE de construtor()eCLASSE::Ptr é atribuído Null 3) CLASSE::O valor de Tmp é actualizado pelo ponteiro para nova CLASSE 4) Elimina PTR<CLASS> structure CLASS::Ptr; executa destruidor, tenta apagar CLASS::Ptr (é Null)
Rapazes, fora de questão temática, sou um novato, gostaria de encomendar um trabalho, agora tenho 0 no meu saldo, posso abrir um tema? ou tenho de carregar a minha conta no início? um pouco confuso quando eles bloqueiam dinheiro da minha conta...
Provavelmente porque se chama manualmente na função OnStart().
Os destruidores de objectos estáticos são chamados após esta função por ordem inversa de declaração.
Provavelmente porque se chama manualmente na função OnStart().
Os destruidores de objectos estáticos são chamados após esta função por ordem inversa de declaração.
Mas a fuga ocorre de facto. Onde está o problema?
Penso que tudo deve funcionar correctamente aqui
Mas a fuga está a acontecer. Onde está o problema?
Cria-se dois objectos e apaga-se apenas um.
Porque é que precisa de um objecto deCLASSE::Tmp?
Cria-se dois objectos e apaga-se apenas um.
Em que momento são criados dois objectos?
Porque é que precisa de um objecto deCLASSE::Tmp?
Graças a si, não há necessidade. Mas para compreender a língua, gostaria ainda de compreender porque é que o exemplo causa fugas.
Os objectos escondidos com construtores escondidos são lógicos em alguns casos, no entanto (provavelmente o mais difundido).
Sim, eu estava enganado. Tem apenas um objecto a ser criado e não eliminado.
Porque quando se chama o construtor
CLASS() { CLASS::Ptr = CLASS::Tmp; }CLASSE::Tmp ainda contém lixo, não o endereço do objecto.
2) a classe é criada, nova CLASSE; executa a construtora CLASSE()e CLASSE::Ptr é atribuído Null
3) CLASSE::O valor de Tmp é actualizado pelo ponteiro para nova CLASSE
4) Elimina PTR<CLASS> structure CLASS::Ptr; executa destruidor, tenta apagar CLASS::Ptr (é Null)
CLASSE::Tmp ainda contém lixo, não um endereço de objecto.
Obrigado! De alguma forma não reparei nesta obviedade.
1) Uma estrutura estática PTR<CLASS>ClASS::Ptr é criada;
2) Cria uma classe, nova CLASSE; gere CLASSE de construtor()eCLASSE::Ptr é atribuído Null
3) CLASSE::O valor de Tmp é actualizado pelo ponteiro para nova CLASSE
4) Elimina PTR<CLASS> structure CLASS::Ptr; executa destruidor, tenta apagar CLASS::Ptr (é Null)
Obrigado. Mas não é Null, é lixo.
Seria bom se a modalidade
não exibiriam setas de ofícios (entradas/saídas). Não há qualquer necessidade deles lá.