Compartilhar via


Aviso do compilador C4958

'operation': a aritmética de ponteiro não é verificável

Comentários

Usar a aritmética de ponteiro produzirá uma imagem não verificável.

Para obter mais informações, consulte Código Puro e Verificável (C++/CLI).

A opção do compilador /clr:safe foi preterida no Visual Studio 2015 e não tem suporte no Visual Studio 2017.

Esse aviso é emitido como um erro e pode ser desabilitado com o aviso pragma ou a opção do compilador /wd.

Exemplo

O seguinte exemplo gera o erro C4958:

// C4958.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )
using namespace System;

int main( ) {
   Int32 arr[] = new Int32[10];
   Int32* p = &arr[0];
   p++;   // C4958
}

O compilador implementa operações de matriz com aritmética de ponteiro. Portanto, as matrizes nativas não são verificáveis; em vez disso, use uma matriz CLR. Para obter mais informações, confira matriz.

O seguinte exemplo gera o erro C4958:

// C4958b.cpp
// compile with: /clr:safe
// #pragma warning( disable : 4958 )

int main() {
   int array[5];
   array[4] = 0;   // C4958
}