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

Traduções de Artigos Traduções de Artigos
Artigo: 322127 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Quando utiliza um operador de atribuição geradas pelo compilador para uma classe base vazio ou estrutura, o código que o compilador gera poderá danificar dados ou escrever para além do fim da classe ou a estrutura.

Causa

Este problema ocorre devido a um erro de compilador Visual C++.

Resolução

Agora é disponibilizada pela Microsoft uma correcção suportada, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack do Microsoft Visual Studio 6.0 que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa de números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota : em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de suporte normais se aplicarão perguntas de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date         Time   Version         Size       File name
   --------------------------------------------------------------
   14-May-2002  10:40  12.0.9586.0     1,224,755  C1xx.dll
				

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Pode utilizar o seguinte código de exemplo para demonstrar o problema. Note que os valores de 'a.m_n' e 'b.m_n' ser diferente.
#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

Artigo: 322127 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 322127
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

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