Articles of raii

Macro / modelo C / C ++ blackmagic para gerar nome exclusivo

Macros estão bem. Modelos estão bem. Praticamente tudo o que funciona está bem. O exemplo é o OpenGL; mas a técnica é específica do C ++ e não depende do OpenGL. Problema preciso: Eu quero uma expressão E; onde não preciso especificar um nome exclusivo; tal que um construtor é chamado onde E é definido, […]

Os destruidores são chamados após um lançamento em C ++?

Eu corri um programa de exemplo e, na verdade, destruidores para objects alocados em pilha são chamados, mas isso é garantido pelo padrão?

Diretrizes gerais para evitar vazamentos de memory em C ++

Quais são algumas dicas gerais para garantir que não vaze memory em programas C ++? Como faço para descobrir quem deve liberar memory que foi alocada dinamicamente?

Preciso fechar manualmente um ifstream?

Preciso chamar manualmente close() quando eu uso um std::ifstream ? Por exemplo, no código: std::string readContentsOfFile(std::string fileName) { std::ifstream file(fileName.c_str()); if (file.good()) { std::stringstream buffer; buffer << file.rdbuf(); file.close(); return buffer.str(); } throw std::runtime_exception("file not found"); } Preciso chamar file.close() manualmente? Não deveria ifstream fazer uso de RAII para fechar arquivos?

É abusivo usar IDisposable e “using” como um meio para obter “comportamentos com escopo definido” para segurança de exceção?

Algo que eu costumava usar em C ++ era permitir que uma class A manipulasse uma condição de input e saída de estado para outra class B , através do construtor e destruidor A, para ter certeza de que se algo naquele escopo emitisse uma exceção, então B teria uma estado quando o escopo foi […]

O C ++ suporta blocos ‘finally’? (E o que é isso ‘RAII’ eu continuo ouvindo?)

O C ++ suporta blocos ‘ finally ‘? Qual é o idioma RAII ? Qual é a diferença entre a linguagem RAII do C ++ e a instrução ‘using’ do C # ?

Entendendo o significado do termo e do conceito – RAII (Resource Acquisition is Initialization)

Você poderia nos dar uma boa descrição do que é RAII, por que é importante, e se pode ou não ter alguma relevância para outros idiomas? Eu sei um pouco. Eu acredito que significa “Aquisição de Recursos é Inicialização”. No entanto, esse nome não combina com meu (possivelmente incorreto) entendimento do que é RAII: tenho […]

Por que é errado usar std :: auto_ptr com contêineres padrão?

Por que é errado usar std::auto_ptr com contêineres padrão?

lançando exceções de um destruidor

A maioria das pessoas diz que nunca jogue uma exceção fora do destruidor – isso resulta em um comportamento indefinido. Stroustrup afirma que “o destruidor de vetores invoca explicitamente o destruidor para cada elemento. Isso implica que, se um destrutor de elemento lança, a destruição do vetor falha … Não há realmente nenhuma boa maneira […]

RAII e pointers inteligentes em C ++

Na prática, com C ++, o que é RAII , quais são os pointers inteligentes , como eles são implementados em um programa e quais são os benefícios de usar o RAII com pointers inteligentes?