Implicações de alocação de memória de membros de dados estáticos
O IBM C Conhecimento Centro afirma que a declaração de um membro da classe Namesp na classe não é uma definição, exigindo que ela seja definida fora da declarações de classe na classe em nomes na classe Namesp no Namesp no Namesp no Namelation no Namelation na classe no nome da classe no nome da classe no nome da classe no nome da classe na classe. Isso levanta a questão de por que isso é necessário e quais são as implicações esquemáticas em relação à alocação de memória.
De acordo com a regra de uma definição, cada objeto estático dentro de um programa deve ser definido exatamente uma vez. Se a declaração do objeto estático no arquivo de cabeçalho fosse uma definição, resultaria em várias definições nas unidades de tradução, violando a regra.
para evitar isso, a declaração no arquivo de cabeçalho não é uma definição. Em vez disso, uma única definição deve ser fornecida fora da definição de classe, normalmente no arquivo de origem da unidade de tradução primária. Isso garante que o objeto estático seja definido apenas uma vez em todo o programa, aderindo à regra de uma definição. Eles são inicializados apenas uma vez, durante a inicialização do programa, e mantêm seus valores ao longo da vida do programa. Isso contrasta com os membros não estáticos de dados, que são alocados na pilha ou pilha quando um objeto é criado e destruído quando o objeto é destruído.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3