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

Traduções deste artigo Traduções deste artigo
ID do artigo: 322127 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

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:
http://support.microsoft.com/contactus/?ws=support
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 );
}
				

Propriedades

ID do artigo: 322127 - Última revisão: terça-feira, 11 de outubro de 2005 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 6.0 Service Pack 5
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB322127 KbMtpt
Tradução automática
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.
Clique aqui para ver a versão em Inglês deste artigo: 322127
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com