toujours initialiser un pointeur ? - C++ - Programmation
Marsh Posté le 28-03-2011 à 02:49:08
Je sais pas s'il y a une solution universelle, mais par principe je te dirais de toujours initialiser tes variables ou tes pointeurs. Même si ton compilateur venait à être assez sympa pour mettre tous tes pointeurs à NULL par défaut, rien ne dit qu'un autre compilo en ferait de même.
La tu fais passer un pointeur qui a potentiellement une adresse aléatoire. Et en plus je vois pas trop l'intérêt de lui passer ça en paramètre du coup, puisque:
1) Elle pointe vers NULL au mieux, vers une adresse aléatoire au pire
2) Elle ne pointe donc pas vers un contenu "utile"
3) Tu ne peux pas modifier l'adresse pointée par le pointeur vu que tu fais passer une copie de ce pointeur, il faudrait utiliser le "&" (et donc passer par un double pointeur) pour ce faire.
A moins que j'ai raté quelque chose, ton code me paraît donc étrange
Marsh Posté le 28-03-2011 à 09:49:52
@ WiiDS : pas tout à fait d'accord pour le 3). Je ne connais pas le prototype de la fonction BN_bn2bin, mais si elle prend le pointeur par référence (on est en C++), et non par adresse, elle peut tout à fait en changer le contenu.
@razuki : Le compilateur ne fait que t'avertir qu'il y a un risque d'erreur si tu n'initialises pas ta variable. C'est en tout cas toujours plus propre de le faire.
Marsh Posté le 28-03-2011 à 12:24:50
Moi je pense que dans l'exemple, cela dépend de la documentation de BN_bn2bin(): s'il requiert un pointeur, est ce sur une zone allouée ou pas? Est ce une variable d'entrée (une chaine de caractère pouvant être NULL)? une variable de sortie(qui va allouée la zone mémoire)?...
Marsh Posté le 28-03-2011 à 14:38:25
breizhbugs a écrit : Moi je pense que dans l'exemple, cela dépend de la documentation de BN_bn2bin(): s'il requiert un pointeur, est ce sur une zone allouée ou pas? Est ce une variable d'entrée (une chaine de caractère pouvant être NULL)? une variable de sortie(qui va allouée la zone mémoire)?... |
En effet, j'avais pas bien compris ce que raconte la doc sur BN_bn2bin( ). Ceci marche très bien:
Code :
|
Marsh Posté le 27-03-2011 à 21:27:24
Bonjour,
j'aimerais savoir si on doit initialiser un pointeur lors de sa déclaration. En effet, quand je compile, j'ai un message de warning tel que :
Et le code ressemble a ceci :
Est ce que je devrais faire un:
Quel est l'inconvénient ? est ce une bonne manière ?
merci d'avance.