pour bien répéter à l'infini aux élèves qu'il faut utiliser new/delete lors des allocation dynamiques (une fois qu'on leur a appris ce que c'était)
Sauf que ce n'est presque plus le cas depuis C++11 et ce ne sera plus du tout le cas dès C++14.
Comme quoi, oui, il y a au moins 4 niveau d'allocation dynamique de mémoire en C++ : *alloc/free, new/delete, RIIA et pointeurs intelligents. Beaucoup de ressources et de prof parlent du deuxième et un peu du 4ème niveau. C'est rare de parler de RIIA et les pointeurs intelligents sont surtout décris grâce à boost.
Si un élève commence à se ramener avec un code qui contient des malloc et des free dans un exercice noté ou un projet, ben on pénalise l'élève, car il a certes pris l'initiative de lire et reprendre du code pour résoudre une partie d'un programme à réaliser, mais il n'a pas été suffisamment rigoureux pour se demander ce que faisait le code ou même pourquoi les ordres d'allocation utilisaient un vocabulaire différent.
Ça c'est bien idiot et ça montre bien que ce qui est noté ce n'est pas la réflexion. On parle d'apprendre à gérer correctement la mémoire. Ce qu'il faut c'est résoudre la question de l'allocation et de la libération. Si l'étudiant utilise malloc/free n'est pas un problème tant que c'est cohérent dans son programme.
Personnellement je trouve qu'il y a une trop grande focalisation sur la mémoire. Il faut utiliser le sacro saint RIAA ou pointeur intelligent et on tape sur les doigts de quiconque oserait faire autre chose, alors qu'il faudrait ouvrir les choses et dire qu'il n'y a pas que la mémoire qui touche à ces aspects allocation/libération les pools de thread par exemple, les pools de connexion, les API de bases de données, la gestion d'un cache,... A force de trop se focaliser sur la gestion de la mémoire direct, on crée des armées de développeurs qui pensent que même si les perf sont pas au rendez-vous et que ça prend plus de mémoire, il n'y a pas de possibilité d'avoir de fuite mémoire dès qu'il y a un gc.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Pas de "bonne" réponse
Posté par barmic . En réponse au journal Python comme premier langage de programmation ?. Évalué à 2.
Sauf que ce n'est presque plus le cas depuis C++11 et ce ne sera plus du tout le cas dès C++14.
Comme quoi, oui, il y a au moins 4 niveau d'allocation dynamique de mémoire en C++ :
*alloc/free,new/delete, RIIA et pointeurs intelligents. Beaucoup de ressources et de prof parlent du deuxième et un peu du 4ème niveau. C'est rare de parler de RIIA et les pointeurs intelligents sont surtout décris grâce à boost.Ça c'est bien idiot et ça montre bien que ce qui est noté ce n'est pas la réflexion. On parle d'apprendre à gérer correctement la mémoire. Ce qu'il faut c'est résoudre la question de l'allocation et de la libération. Si l'étudiant utilise
malloc/freen'est pas un problème tant que c'est cohérent dans son programme.Personnellement je trouve qu'il y a une trop grande focalisation sur la mémoire. Il faut utiliser le sacro saint RIAA ou pointeur intelligent et on tape sur les doigts de quiconque oserait faire autre chose, alors qu'il faudrait ouvrir les choses et dire qu'il n'y a pas que la mémoire qui touche à ces aspects allocation/libération les pools de thread par exemple, les pools de connexion, les API de bases de données, la gestion d'un cache,... A force de trop se focaliser sur la gestion de la mémoire direct, on crée des armées de développeurs qui pensent que même si les perf sont pas au rendez-vous et que ça prend plus de mémoire, il n'y a pas de possibilité d'avoir de fuite mémoire dès qu'il y a un gc.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)