Share via


/Zc:sizedDealloc (abilita le funzioni di deallocazione dimensionata globali)

L'opzione del compilatore /Zc:sizeDealloc indica al compilatore di chiamare preferibilmente funzioni globali operator delete o operator delete[] che hanno un secondo parametro di tipo size_t quando la dimensione dell'oggetto è disponibile. Queste funzioni possono usare il size_t parametro per ottimizzare le prestazioni dell'dealloatore.

Sintassi

/Zc:sizedDealloc[-]

Osservazioni:

Nello standard C++11 è possibile definire funzioni operator delete membro statiche e operator delete[] che accettano un secondo size_t parametro. In genere vengono usati in combinazione con le nuove funzioni dell'operatore per implementare allocatori e dealloatori più efficienti per l'oggetto. Tuttavia, C++11 non ha definito un set equivalente di funzioni di deallocazione nell'ambito globale. In C++11 le funzioni di deallocazione globali con un secondo parametro di tipo size_t vengono considerate funzioni di eliminazione del posizionamento. Devono essere chiamati in modo esplicito passando un argomento size.

Lo standard C++14 modifica il comportamento del compilatore. Quando si definisce global operator delete e operator delete[] che accetta un secondo parametro di tipo size_t, il compilatore preferisce chiamare queste funzioni quando le versioni dell'ambito membro non vengono richiamate e le dimensioni dell'oggetto sono disponibili. Il compilatore passa in modo implicito l'argomento size. Le versioni con singolo argomento vengono chiamate quando il compilatore non riesce a determinare le dimensioni dell'oggetto deallocato. In caso contrario, le regole consuete per la scelta della versione della funzione di deallocazione da richiamare vengono comunque applicate. Le chiamate alle funzioni globali possono essere specificate in modo esplicito anteponendo l'operatore di risoluzione dell'ambito (::) alla chiamata di funzione deallocazione.

Per impostazione predefinita, Visual C++ a partire da Visual Studio 2015 implementa questo comportamento standard C++14. È possibile specificare in modo esplicito questa impostazione impostando l'opzione del compilatore /Zc:sizeDealloc . Rappresenta una modifica potenzialmente di rilievo. Usare l'opzione /Zc:sizeDealloc- per mantenere il comportamento precedente, ad esempio quando il codice definisce gli operatori di eliminazione del posizionamento che usano un secondo parametro di tipo size_t. Le implementazioni predefinite della libreria di Visual Studio delle funzioni di deallocazione globali con il secondo parametro di tipo size_t richiamano le versioni dei singoli parametri. Se il codice fornisce solo l'operatore globale delete e l'operatore delete[], le implementazioni predefinite della libreria delle funzioni di deallocazione delle dimensioni globali richiamano le funzioni globali.

L'opzione del compilatore /Zc:sizeDealloc è attivata per impostazione predefinita. L'opzione /permissive- non influisce su /Zc:sizeDealloc.

Per altre informazioni sui problemi di conformità in Visual C++, vedere Nonstandard Behavior.

Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Dal menu a discesa Configurazioni scegliere Tutte le configurazioni.

  3. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  4. Modificare la proprietà Opzioni aggiuntive per includere /Zc:sizedDealloc o /Zc:sizedDealloc- e quindi scegliere OK.

Vedi anche

Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC
/Zc (conformità)