#include #include int myMain() { char* t = static_cast(malloc(10)); char c = t[0]; // Gardez les lignes 29, 30 et 31 en commentaire pour observer les fuites // mémoire. // NB : Dr Memory ne détecte la fuite liée à la string C++ que si vous avez // généré votre // code avec Propriété de configuration C/C++ > Génération de code > // Bibliothèque runtime à /MTd (au lieu de /MDd par défaut) // En les décommentant, vous pourrez expérimenter que Visual Studio fait une // analyse de vos accès mémoire et qu'il signale une erreur si vous mettez // l'option /MTd à la place de /MDd (cf. ci-dessous) : // - Générez le code (Propriété de configuration C/C++ > Génération de code > // Bibliothèque runtime est à /MDd par défaut). // - Exécutez-le en mode debug : Windows fait un bip, mais il ne se passe // rien au niveau de la fenêtre qui s'est ouverte. // - Arrêtez le débogage. // - Propriété de configuration C/C++ > Génération de code > // Bibliothèque runtime et mettre /MTd au lieu de /MDd // - Exécutez votre programme en mode debug : cette fois, vous avez une // fenêtre // "HEAP CORRUPTION detected" qui s'affiche. En cliquant sur "Recommencer", // vous arrivez à l'endroit de l'erreur. Vidual Studio vous affiche 2 // warnings par rapport aux accès glauques qui sont faits sur le tableau t. // Ces warnings sont obtenus grâce aux options sélectionnées dans Propriété // de configuration C/C++ > Génération de code > Vérifications de base à // l'exécution // qui est à / RTCsu // t[10] = 'a'; // free(t); // t[5] = 'b'; std::string* s = new std::string(); std::cout << "Hello World!\n"; return 0; } int main() { return myMain(); }