begin process at 2013 06 19 08:48:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Pointeurs et sécurité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pointeurs et sécurité

mercredi 3 octobre 2012 à 12:57:43 | Pointeurs et sécurité

Jin31

Bonjour,

est-il nécessaire de mettre a NULL un pointeur temporaire à la fin d'une routine par exemple "par sécurité" ?

Exemple :

Code C/C++ :
void String::append(const char *chain) {

    unsigned int result_lenght = m_lenght + lenghtOf(chain);
    char *result_chain = new char[result_lenght+1];

    for (unsigned int i = 0; i < m_lenght; i++)
        result_chain[i] = m_chain[i];

    delete[] m_chain;

    for (unsigned int i = m_lenght; i < result_lenght; i++)
        result_chain[i] = chain[i - m_lenght];

    result_chain[result_lenght] = '\0';

    m_chain = result_chain;
    m_lenght = result_lenght;

    result_chain = NULL; // conseillé??????????????
}


Je remercie celui ou celle qui m'accordera un peu de son temps!
mercredi 3 octobre 2012 à 13:27:14 | Re : Pointeurs et sécurité

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour.

Tout d'abord, si tu fais du C++, je te déconseille l'utilisation de NULL, au profit de 0, voir: http://0217021.free.fr/portfolio/axel.berardino/articles/null-en-cpp

Mettre à 0 un pointeur sur chaîne, ne fait en rien de la sécurité. Dans le cas présent, "result_chain" étant une variable locale, elle sera détruite. La mettre à 0 ne sert à rien.

Le seul cas où cela peut être utile, est si tu réutilises cette variable plus tard. Néanmoins, c'est un cas qui ne devrait pas arriver très souvent si tu codes proprement.
Ex:
Code C/C++ :
char* result_chain = new char[result_lenght+1];
delete[] result_chain;

... // plus loin

if (!result_chain) // Problème ici si l'on n'a pas result_chain à 0.
  result_chain = new char[result_lenght+1];


Pour l'éviter, on peut effectivement mettre result_chain à 0, ou mieux, ne pas réutiliser les variables.
Ex:
Code C/C++ :
char* result_chain = new char[result_lenght+1];
delete[] result_chain;

... // plus loin
char* result_chain2 = new char[result_lenght+1];


________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
mercredi 3 octobre 2012 à 13:29:25 | Re : Pointeurs et sécurité

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
Pour bien répondre à ta question, le:
"result_chain = NULL; // conseillé??????????????"
Ne sert absolument à rien du tout. Tu peux donc le retirer.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
mercredi 3 octobre 2012 à 14:06:55 | Re : Pointeurs et sécurité

Jin31

Je vous remercie pour toutes ces précisions!


Cette discussion est classée dans : sécurité, char, result, chain, lenght


Répondre à ce message

Sujets en rapport avec ce message

Fonction Convert [ par nem02004 ] Voila mon code marche, mais comme je ne suis pas un super programmeur, je pense qu'il ya moyen de l'amélioré, c'est la que vous intervenez :DEn fait i char* make_img_name(void) [ par goldziko9 ] Salut tout le monde!!       voici mon probleme, je fait un simple porg de creation d'image avec saveugarde. l'image est seuvgarder dans une base ave Modification d'un crytage d'hostname sur unrealircd3.2.7 [ par Loveurs ] Bonsoir,J'aimerai savoir si quelqu'un serrai comment modifier le crytage d'host de unreal de façon à faire crytage.wanadoo.fr pour les ip résolues, es AssocQueryString Windows ? [ par mcallan ] Bonjour :) Qu'est ce qu'il ne va pas dans ce code ?je souhaite recuperer le nom et chemin de l'excutable associé a l'extensionSous Windows Vista  , pt pb SysAllocStringByteLen() [ par Neo_Fr ] Salut a tous,Je suis actuelement en train de faire une dll pour vb qui hash des strings en md5,et j'ai un petit pb avec la fonctions: - SysAllocString Extraction de données dans un char[260] [ par seb2086 ] Bonjour,char variable[260] = "C:\Mes docs\Dossier\Objet.X" ;Voila en fait je voudrais récupérer dans une autre variable seulement Objet.X.En gros il f Url encoding [ par Lestat_2070 ] Bonjour à tous,Tout d'abord, j'espère que je ne me trompes pas de section, pour ce sujet. Ensuite, j'essaye de faire une fonction comparable à la fonc recuperation d'un resultat d'une requete sql en c++ [ par mamstyle ] je travaille actuellement sur un projet de BTS.je dois recuperer le resultat d'une requete sql du type select codebarre from employe en C++ dans un ch remplacer une chaine par une variable [ par abdoulax ] Bonjour,J'ai une chaine :"ceci est un test %result% fin du test"qui contient la chaine "%result%".Comment puis je remplacer la chaine "%result%" par u ouvrir plusieur fichierx textes [ par seignseifer ] Bonjour, alors je voudrais ouvrir plusieurs fichier textes pour mon programme. J'ai un peu avance mais je bloque sur quelquechose. Je fais une boucle


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,067 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales