les langages de programmation C et C++ qui sont connus pour leurs failles de sécurité.
En même temps, ce n'est pas totalement faux. Les gens ne se sont pas amusés à sortir Rust/Swift/Go/... juste pour passer le temps.
Hum... laissez-moi réfléchir 2 secondes... C et C++ ne sont pas sécurisés. Ok. C'est vrai, on peut faire de la merde avec, force est de le reconnaître.
Mais par contre, pourquoi toujours mettre le C et le C++ dans le même panier? Pour rappel, en C++ il est possible de gérer la mémoire (et de manière générale les ressources, en fait) automatiquement. La seule raison d'appeler directement delete(), c'est quand on écrit du code pour gérer les ressources, sinon on a le choix, entre vector, list, (削除) auto_ptr (c++98, c'est trop récent je suppose) (削除ここまで) unique_ptr (c++11), ...
La ou le C++ n'offre à ma connaissance aucun outil en standard, c'est dans le traitement du dépassement de capacité des entiers, utilisés parfois pour accéder aux éléments d'un tableau (c'est bien le cas qui nous intéresse ici, non?).
D'un autre côté, quand on utilise des tableaux alloués dynamiquement (et statiquement aussi, depuis 2011), si on fait les choses dans la façon de faire recommandée du langage, on utilise vector, qui offre à mon humble avis tout ce qu'il faut pour éviter d'accéder à des éléments hors limite.
Bref, ok, le C n'offre aucun moyen simple de coder en sécurité de façon standard (quoique, ça à peut-être évolué, ça fait longtemps que je ne suis plus le langage C), mais pour le C++, si on utilise les outils du C++ et pas ceux du C, on peut coder simplement en évitant les accès mémoire foireux, le tout avec une performance globalement identique au C (parfois un peu moins, parfois un peu plus, notamment std::sort vs qsort), réputé le plus performant des langages portables.
[^] # Re: Oui mais non
Posté par freem . En réponse au journal ADN overflow : c'est de la faute de l'open source. Évalué à 6.
Hum... laissez-moi réfléchir 2 secondes... C et C++ ne sont pas sécurisés. Ok. C'est vrai, on peut faire de la merde avec, force est de le reconnaître.
Mais par contre, pourquoi toujours mettre le C et le C++ dans le même panier? Pour rappel, en C++ il est possible de gérer la mémoire (et de manière générale les ressources, en fait) automatiquement. La seule raison d'appeler directement delete(), c'est quand on écrit du code pour gérer les ressources, sinon on a le choix, entre vector, list,
(削除) auto_ptr (c++98, c'est trop récent je suppose) (削除ここまで)unique_ptr (c++11), ...La ou le C++ n'offre à ma connaissance aucun outil en standard, c'est dans le traitement du dépassement de capacité des entiers, utilisés parfois pour accéder aux éléments d'un tableau (c'est bien le cas qui nous intéresse ici, non?).
D'un autre côté, quand on utilise des tableaux alloués dynamiquement (et statiquement aussi, depuis 2011), si on fait les choses dans la façon de faire recommandée du langage, on utilise vector, qui offre à mon humble avis tout ce qu'il faut pour éviter d'accéder à des éléments hors limite.
Bref, ok, le C n'offre aucun moyen simple de coder en sécurité de façon standard (quoique, ça à peut-être évolué, ça fait longtemps que je ne suis plus le langage C), mais pour le C++, si on utilise les outils du C++ et pas ceux du C, on peut coder simplement en évitant les accès mémoire foireux, le tout avec une performance globalement identique au C (parfois un peu moins, parfois un peu plus, notamment std::sort vs qsort), réputé le plus performant des langages portables.