il me semble avoir lu que les mélanges de malloc/free et new/delete sont proscrits ; non seulement pour un tableau (ça vous l'avez parfaitement respecté) mais aussi dans un même code.
Ce qui pose problème, c'est la libération par free() d'un pointeur alloué par new, et réciproquement delete pour malloc(). Mais il n'y a pas de contre indication technique a l'utilisation des deux systêmes dans le même code, sous réserver de respecter la régle précédente.
Eventuellement, on pourra dire que le mélange des deux est une faute de style, une horreur pour la maintenance, une plaie pour la gestion des erreurs, etc. mais ca ne va pas plus loin.
Autrement dit, si le bouquin en question affirme que le code suivant est proscrit pour raison technique :
void foobar() {
char* x = (char*)malloc(1) ;
char* y = new(nothrow) char ;
// ...
delete y ;
free(x);
}
possible que j'interprète mal, mais si tu copie des *pointeurs* dans ton vecteur, et que tu désalloues la mémoire pointée, forcément ...
Tu interprète mal, regardes les ligne 199-200 dans le codé posté ci-dessus : le pointeur en question est en fait un tableau, et il y a copie du contenu de ce tableau dans un vecteur via une boucle for. Donc le pointeur lui même n'est pas mémorisé, il n'est plus utilisé après la boucle, on peut le libérer.
Et que dit la documentation de getChannelXData() à propos de la mémoire allouée pour le résultat ? Est-il indiqué que la libération est à la charge du code appelant ?
Sinon, pour le code source reproduit ici, il n'est pas necessaire de tester le pointeur à NULL avant de faire le free(), ca ne sert a rien. Par contre, avant la boucle for, ca pourrait être plus utile...
Avec un vrai éditeur, il est possible de définir la taille des indentations directement dans le fichier, comme ca c'est indépendant des réglages de l'utilisateur, donc le source est toujours formaté tel que l'a voulu d'auteur.
par exemple, des commentaires à placer a la fin d'un fichier C++, pour emacs :
// Local Variables:
// mode: c++
// tab-width: 8
// End:
Et la meme chose pour vim :
// vim: set ts=8 sw=4 filetype=cpp
Evidemment, on peut mettre les deux simultanément, comme ca tout le monde est content...
Au départ, il s'agissait seulement d'installer screen. On a montré plus haut que ca ce compilait vite, mais maintenant, on parle d'installer une vieille version de gcc, puis de compiler une version récente... dans le genre simple et rapide, on a fait mieux ! (surtout qu'il faudra aussi installer quelques outils GNU supplémentaires, genre make, awk et m4....)
Quant a la motivation pour ne pas fournir de compilateur C gratuit avec l'installation de base, je ne vois pas pas d'autre raison que l'avarice du fournisseur d'AIX, mais généralement ca ne dérange pas les clients...
Oui, il y a toujours moyen... m'enfin bon, le besoin au départ c'est d'avoir screen qui fonctionne, on a montré plus haut que ca se compile vite, et maintenant on dérive sur l'installation d'un gcc binaire puis compilation d'un gcc récent... on a fait plus simple, non ?
Quant aux motivations qui mène a ne pas fournir de compilateur gratuit dans l'install de base, a part l'avarice, je ne vois pas. Mais bon, on parle d'AIX, généralement ca ne dérange pas le client de payer, sinon il aurait pris autre chose.
Pour compiler, il faut déja avoir un compilateur sur la machine... et là on est sous AIX, environnement hostile qui ne vient pas avec un compilo gratuit dans l'installation de base...
Ben voyons.... ce qui est interessant dans ta citation, c'est qu'il manque la définition du "public" qui prend connaissance des informations....
On nous a expliqué plus haut qu'il vaut mieux être dans la rue en face, relié en fibre optique, plutot que dans le Larzac en 56k, pour avoir les infos avant tout le monde, donc faire du pognon avant les autres.
Donc soit il n'y a pas de "public" dans le Larzac, soit le code en question est une vaste escroquerie.
A mon humble avis, "qualitay" n'est pas un barbarisme, juste une fôte d'orthographe. En revanche, "journaleur" doit bien faire partie de la première catégorie.
Ca me parassait pourtant clair : dans la même phrase tu as mis Hurd, NetBSD et FreeBSD, et ajouté que deux ne sont pas promis à un bel avenir... si c'est pas un appel au troll, je ne sais pas ce que c'est.
Alors comme c'est trolldi, je pousse un peu a la roue pour voir si ca mord.
Le concept que tu cherches est peut être la portabilité : Debian ne se limite plus a Linux, voir les ports GNU/Hurd et GNU/kFreeBSD.
(Ca n'a peut être rien a voir, mais c'est juste pour le plaisir de citer Hurd vu qu'on est trolldi aujourd'hui).
Ouch ! Au debut, j'etais prêt a te contredire, parce que j'étais persuadé que le ':' à la fin n'ajoutait pas le répertoire courant dans la recherche, parce que après tout, le répertoire courant ca devrait être ':.' (separateur point), pas ':' (séparateur rien) .
Et puis j'ai testé... bien vu. Mais pourquoi ce comportement étrange ?
Faut pas confondre, en C++, l'initialisation de la variable par le constructeur et l'allocation mémoire nécessaire pour le stockage de la variable en question. Si les deux opérations se produisent généralement au meme endroit, ce n'est pas obligatoire.
Effectivement. Sur ma machine, les jeux KDE sont installés dans /usr/games, ainsi que l'indispensable fortune. Le 'rarely used' du lien que j'ai posté me parait un peu présomptueux.
[^] # Re: Plusieurs remarques
Posté par shbrol . En réponse au message Effacer un pointeur fournit par une librairie externe. Évalué à 4.
Ce qui pose problème, c'est la libération par free() d'un pointeur alloué par new, et réciproquement delete pour malloc(). Mais il n'y a pas de contre indication technique a l'utilisation des deux systêmes dans le même code, sous réserver de respecter la régle précédente.
Eventuellement, on pourra dire que le mélange des deux est une faute de style, une horreur pour la maintenance, une plaie pour la gestion des erreurs, etc. mais ca ne va pas plus loin.
Autrement dit, si le bouquin en question affirme que le code suivant est proscrit pour raison technique :
void foobar() {
char* x = (char*)malloc(1) ;
char* y = new(nothrow) char ;
// ...
delete y ;
free(x);
}
alors mauvais bouquin, changer bouquin.
[^] # Re: free ... ou pas ?
Posté par shbrol . En réponse au message Effacer un pointeur fournit par une librairie externe. Évalué à 1.
Tu interprète mal, regardes les ligne 199-200 dans le codé posté ci-dessus : le pointeur en question est en fait un tableau, et il y a copie du contenu de ce tableau dans un vecteur via une boucle for. Donc le pointeur lui même n'est pas mémorisé, il n'est plus utilisé après la boucle, on peut le libérer.
Pour le reste, 100% d'accord.
[^] # Re: Plusieurs remarques
Posté par shbrol . En réponse au message Effacer un pointeur fournit par une librairie externe. Évalué à 1.
Sinon, pour le code source reproduit ici, il n'est pas necessaire de tester le pointeur à NULL avant de faire le free(), ca ne sert a rien. Par contre, avant la boucle for, ca pourrait être plus utile...
[^] # Re: Et les elastic tabstops ?
Posté par shbrol . En réponse au sondage J'indente mon code source avec. Évalué à 5.
par exemple, des commentaires à placer a la fin d'un fichier C++, pour emacs :
// Local Variables:
// mode: c++
// tab-width: 8
// End:
Et la meme chose pour vim :
// vim: set ts=8 sw=4 filetype=cpp
Evidemment, on peut mettre les deux simultanément, comme ca tout le monde est content...
[^] # Re: peut-etre commencer par le commencement
Posté par shbrol . En réponse au message Commande screen sous AIX ?. Évalué à 1.
Quant a la motivation pour ne pas fournir de compilateur C gratuit avec l'installation de base, je ne vois pas pas d'autre raison que l'avarice du fournisseur d'AIX, mais généralement ca ne dérange pas les clients...
[^] # Re: peut-etre commencer par le commencement
Posté par shbrol . En réponse au message Commande screen sous AIX ?. Évalué à 2.
Quant aux motivations qui mène a ne pas fournir de compilateur gratuit dans l'install de base, a part l'avarice, je ne vois pas. Mais bon, on parle d'AIX, généralement ca ne dérange pas le client de payer, sinon il aurait pris autre chose.
[^] # Re: peut-etre commencer par le commencement
Posté par shbrol . En réponse au message Commande screen sous AIX ?. Évalué à 2.
[^] # Re: Ou pas
Posté par shbrol . En réponse au journal Benoît Mandelbrot change de dimension. Évalué à 4.
[^] # Re: Vive la compétition et les machines
Posté par shbrol . En réponse au journal Linux, le trading à haute fréquence et les gamers. Évalué à 4.
On nous a expliqué plus haut qu'il vaut mieux être dans la rue en face, relié en fibre optique, plutot que dans le Larzac en 56k, pour avoir les infos avant tout le monde, donc faire du pognon avant les autres.
Donc soit il n'y a pas de "public" dans le Larzac, soit le code en question est une vaste escroquerie.
[^] # Re: "qualitay"
Posté par shbrol . En réponse au journal Contre les modes pourries. Évalué à 2.
[^] # Re: Sympa !
Posté par shbrol . En réponse au journal Oxmo, le geek et le libre. Évalué à 4.
[^] # Re: mouais
Posté par shbrol . En réponse au journal Lettre ouverte à l'HADŒPDI : mise en place d'un service de courrier électronique. Évalué à 4.
[^] # Re: Néologisme?
Posté par shbrol . En réponse au journal Résultat du Google Summer of Code 2010 chez Debian. Évalué à 2.
Alors comme c'est trolldi, je pousse un peu a la roue pour voir si ca mord.
[^] # Re: Néologisme?
Posté par shbrol . En réponse au journal Résultat du Google Summer of Code 2010 chez Debian. Évalué à 1.
même si deux des trois ports non linux ne semblent pas promis à un bel avenir
Très, très beau gabarit celui là, j'aurais même pas osé...
[^] # Re: Néologisme?
Posté par shbrol . En réponse au journal Résultat du Google Summer of Code 2010 chez Debian. Évalué à 5.
(Ca n'a peut être rien a voir, mais c'est juste pour le plaisir de citer Hurd vu qu'on est trolldi aujourd'hui).
[^] # Re: Si j'ai bien tout compris...
Posté par shbrol . En réponse à la dépêche Connaissez-vous les bitcoins ?. Évalué à 3.
[^] # Re: Si j'ai bien tout compris...
Posté par shbrol . En réponse à la dépêche Connaissez-vous les bitcoins ?. Évalué à 5.
(je sors en courant, encore....)
[^] # Re: 21 millions de bit\_o<
Posté par shbrol . En réponse à la dépêche Connaissez-vous les bitcoins ?. Évalué à 7.
(désolé, je sors en courant).
[^] # Re: Attention DANGER
Posté par shbrol . En réponse au message Comment concaténer des chemins de façon plus simple sous Bash ?. Évalué à 2.
Et puis j'ai testé... bien vu. Mais pourquoi ce comportement étrange ?
# Interessant
Posté par shbrol . En réponse au journal gcp: un outil de copie à la cp. Évalué à 8.
[^] # Re: Sécurité ?
Posté par shbrol . En réponse à la dépêche Un nouveau serveur httpd : Ashd, A Sane HTTP Daemon. Évalué à 2.
T const operator ++(typename const & target)
Le deuxieme const semble de trop, non ?
[^] # Re: Re:Re:Sécurité ?
Posté par shbrol . En réponse à la dépêche Un nouveau serveur httpd : Ashd, A Sane HTTP Daemon. Évalué à 1.
[^] # Re: Ça ne mérite pas une dépêche.
Posté par shbrol . En réponse à la dépêche Pas de Chromium pour Debian Squeeze. Évalué à 2.
[^] # Re: Ça ne mérite pas une dépêche.
Posté par shbrol . En réponse à la dépêche Pas de Chromium pour Debian Squeeze. Évalué à 2.
[http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html]
[^] # Re: Pipo
Posté par shbrol . En réponse au journal Linux sur le desktop et 1% de part de marché : mythe ou réalité ?. Évalué à 2.