Entrar

Classe base vazia ou operador de atribuição de estrutura pode corrompido dados

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

322127
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Quando você usa um operador de atribuição gerado pelo compilador para uma classe base vazia ou estrutura, o código que o compilador gera pode corromper dados ou escrever além do fim da classe ou a estrutura.
Causa
Esse problema ocorre devido a um erro no compilador Visual C++.
Resolução
Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack do Microsoft Visual Studio 6.0 que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter a correção. Para obter uma lista completa dos números de telefone do Atendimento Microsoft do e informações sobre os custos de suporte, visite o seguinte site: Observação : em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos de suporte normais serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

A versão em inglês dessa correção apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version         Size       File name   --------------------------------------------------------------   14-May-2002  10:40  12.0.9586.0     1,224,755  C1xx.dll				

Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
Você pode usar o seguinte código de exemplo para demonstrar o problema. Observe que os valores de 'a.m_n' e 'b.m_n' diferem.
#include <stdio.h>class CEmpty{public:	CEmpty() throw()	{	}	CEmpty( const CEmpty& ) throw()	{	}	~CEmpty() throw()	{	}	CEmpty get() const throw()	{		return( *this );	}};class CDerived :	public CEmpty  // Empty base class {public:	int m_n;	CDerived& operator=( const CDerived& src ) throw()	{		m_n = src.m_n;                // Overwrites low byte of m_n.		CEmpty::operator=( src.get() ); 		return( *this );	}	};int main( int, char** ){	CDerived a;	a.m_n = 0x01020304;	CDerived b;	b = a;	printf( "0x%08x\n", b.m_n );	return( 0 );}				

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 322127 - Última Revisão: 01/07/2015 15:27:50 - Revisão: 1.3

  • Microsoft Visual C++ 6.0 Service Pack 5
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB322127 KbMtpt
Comentários