Classe base vazia ou operador de atribuição de estrutura pode danificado 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 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.

322127
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
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: 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 );}				

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
Esta informação foi útil?