"Debug" et "Release" sont juste des noms prédéfinis pour les configurations de projet défini par Visual Studio.
Pour voir les différences, regardez l'Onglet Construire dans les Propriétés du Projet dans Visual Studio.
Les différences dans VS2005 comprennent:
ainsi que d'autres différences que vous pouvez voir en cliquant sur le bouton "Avancé"
Mais, vous pouvez:
Modifier les paramètres de construction pour Debug et Release des configurations dans le Projet de Propriétés / Build
Créer vos propres configurations en cliquant-droit sur la solution dans l'Explorateur de solutions et sélectionnez Configuration Manager
Je pense que le comportement de la constante DEBUG est assez clair (peut être référencée dans la #si la directive de préprocesseur ou dans le ConditionalAttribute). Mais je ne suis pas au courant de toute une documentation exhaustive sur exactement ce que les optimisations sont activées - en fait, je soupçonne Microsoft voudrait être libre pour améliorer leur optimiseur sans préavis