Accueil > Forum > > > > pb d'allocation memoire pour des tableaux char
pb d'allocation memoire pour des tableaux char
mardi 7 septembre 2004 à 22:33:23 |
pb d'allocation memoire pour des tableaux char

kollibar
|
bonjour, j ai un pb sur le code suivant(imprime le handle et le nom de toutes les fenetres active a l'écran) au niveau des variables char * titre et char * identifiantau moment d imprimer le resultat a l ecran, la variable identifiant est normal mais la variable titre contient la variable identifiant: 328088:Invite de comman32808au lieu de 328088:Invite de commande - edit testfen.cppet la meme chose se produit pour tous mes affichages. selon moi, les 2 tableaux se recouvrent en memoire, car si je modifie identifiant avant titre, c'est identifiant qui contient une partie de titre. si qq1 peut m'aider. au fait j utilise free borland C++ compiler 5.5 #include <windows.h> #include <string> #include <iostream.h>
void main(void) { int taille=1; //taille du tableau nom de fenetre
char * titre=(char *) malloc(taille); //alloue un tab de 1char pour le nom de la fenetre(non suffissant) char * identifiant=(char *)malloc(12); //alloue un tableau de 12char pour l identifiant(tjr suffissant)
HWND handle=GetForegroundWindow(); //handle de la fenetre au premier plan(faut bien commenc? qq part!) UINT direction=GW_HWNDNEXT; //direction pour la recherche du prochain handle => suivant while ( handle != NULL ) { //tant qu on a pas epuise tout les handle handle=GetNextWindow(handle,direction); //recup le handle suivant if (handle != NULL && IsWindowVisible(handle)) { //tant qu'on a un handle taille=GetWindowTextLength(handle); //taille du texte de la fenetre if ( GetWindowTextLength(handle)+1>taille ){ //si la taille n est plus suffisante taille=GetWindowTextLength(handle); //recup la taille du texte
realloc(&titre,taille); //realloue l espace memoire necessaire
} GetWindowText(handle,titre,taille); //recupe le texte de la fenetre
identifiant=itoa((long)handle,identifiant,10); //convertit le nø du handle en char * cout << identifiant << ":" << titre << endl; //affiche l identifiant et le titre de la fenetre
} else if (direction==GW_HWNDNEXT) { //si plus de handle ds la direction 'suivant' direction=GW_HWNDPREV; //change la direction('precedent') handle=GetForegroundWindow(); //repart du meme endroit(fenetre au premier plan) } } } KOLLIBAR bare
|
|
mardi 7 septembre 2004 à 22:55:31 |
Re : pb d'allocation memoire pour des tableaux char

djl
|
deja
titre = realloc(titre,taille);
et fais du c, pas de cout & iostream.h, pas de cast de void*
|
|
mercredi 8 septembre 2004 à 02:51:03 |
Re : pb d'allocation memoire pour des tableaux char

NitRic
|
Il ne fait pas de C, il fait du C++, il peut très bien utiliser malloc() et compagnie en C++ mais il doit transtyper en C++ ...
Faut faire gaffe avec realloc()
NewPtr = realloc( OldPtr, NewSize );
si realloc() ne peut pas, pour une raison quelconque, reallouer de l'espace pour OldPtr, il retourne NULL mais ne libère pas l'espace de OldPtr ... Donc, titre = realloc(titre, taille) risque de poser problème un jour ou l'autre ...
Et heu ... juste comme ca, il manque les free() ...
Dernière chose, si tu code en C++, inclus la stl de cette facon:
#include <string> #include <iostream> // etc ... using namespace std;
// sans .h à string, iostream, list, vector, etc ...
Pour cette raison >> http://www.devx.com/tips/Tip/14447
~(.:: NitRic ::.)~
|
|
mercredi 8 septembre 2004 à 09:25:38 |
Re : pb d'allocation memoire pour des tableaux char

djl
|
qu'on soit d'accord, soit c'est du c++ (standard) avec la lib standard (mais pas de malloc/free, plutot les allocateurs du c++)
j'ai dis de faire du c car ce code n'a rien de c++ a part iostream.h (qui n'est pas standard) et string qui ne semble pas etre utilisé (sans parler du void main qui ne compile pas en c++), donc a partir de ce code c'est plus simple de faire du bon c que du c++ (on apprend pas stl & co en 5min)
|
|
mercredi 8 septembre 2004 à 10:32:34 |
Re : pb d'allocation memoire pour des tableaux char

NitRic
|
Ce n'est pas mon `genre` de m'obstiner sur ce genre de sujet mais, standard, standard, standard, ... Vous croyez vraiment que _tout_ le monde code `standard` !? Utilise _que_ les `standard` !? `standard` !? standard par ci, standard par la ...
Le fait d'utiliser malloc()/free() ne pose aucun problème, new/delete fait appel à malloc()/free() alors moi j'me dis que si je préfère malloc()/free() à new/delete pourquoi ne pas utiliser directement malloc()/free() ! Le seul _vrai_ problème c'est avec les class/objets en C++ ou new/delete sont utile au niveau des constructeurs/destructeurs ...
Le fait d'inclure iostream.h(avec .h) je crois que c'est seulement parce qu'il ne le savais pas. <string> ... c'est peut-être pour des besoins futurs, qui sait!
De plus, sa compilation ce fait en C++, iostream(avec ou sans .h) & string(sans .h) ne compile pas en C ...
Pourquoi void main(void) ne compilerait pas !? Parce que ce n'est pas standard !? Sans commentaire ...
C'est vrai qu'en C/C++ il est préférable de prendre de _bonne_ habitude dès le départ ... Apprendre correctement les standards(suivant le langage) pour être capable de les utiliser à leurs maximum et de facon correct, etc ...
C'est vrai que le fait de mélanger le C et le C++ n'est peut-être pas très `standard` mais tu peux très bien faire du code très puissant, fiable, structuré, sécuritaire, ... même si tu le fais ...
On dirait que l'on pense _que_ `standard`, certe, c'est très bien mais il ne faut pas devenir parano non plus(faut pas le prendre perso hein) ...
Voilà, c'est tout ce que j'avais à ajouter :)
~(.:: NitRic ::.)~
|
|
mercredi 8 septembre 2004 à 10:42:13 |
Re : pb d'allocation memoire pour des tableaux char

djl
|
c'est toi qui vois, seul le standard garanti la portabilité du code (void main interdit en c++, sur certains systeme ca ne fonctionnerais pas)
" C'est vrai que le fait de mélanger le C et le C++ n'est peut-être pas très `standard` mais tu peux très bien faire du code très puissant, fiable, structuré, sécuritaire, ... même si tu le fais ..."
tout a fais d'accord, mais c'est pas ce que je conseillerais a un debutants, sauf si il connais deja le c mais bon, moi je prefere largement la stl
|
|
mercredi 8 septembre 2004 à 16:29:41 |
Re : pb d'allocation memoire pour des tableaux char

magic_Nono
|
gete un oeil a la section toString des mfc ça devrait t'aider & complete là au besoin ++ Magic Nono: l'informagicien!
|
|
mercredi 8 septembre 2004 à 16:30:49 |
Re : pb d'allocation memoire pour des tableaux char

magic_Nono
|
mmmm G vu que tu n'utilise po VC C po grave, un prj lancé serait d'avoir des toString pr un pe tt ce qui existe.... Bonne prog Magic Nono: l'informagicien!
|
|
mercredi 8 septembre 2004 à 20:45:19 |
Re : pb d'allocation memoire pour des tableaux char

kollibar
|
bon ben effectivement je debute en C++ et j ai jamais fait de C. j ai un compilateur C++ mais pas de doc avec alors j en recup un peu et je fait des essais.
c est vrai q ca donne peut etre des codes un peu bizarre!
en tt cas merci... pour le coup du void main ca compilait tres bien mais maintenant je connai!!
KOLLIBAR bare
|
|
jeudi 9 septembre 2004 à 14:44:31 |
Re : pb d'allocation memoire pour des tableaux char

kollibar
|
sinon
new correspond a malloc et delete a free mais comment se passe la realocation??
KOLLIBAR bare
|
|
Cette discussion est classée dans : taille, handle, titre, char, identifiant
Répondre à ce message
Sujets en rapport avec ce message
Taille de ma structure [ par crocejf2000 ]
Salut a tous, J'ai un tres gros probleme qui me bloque toute mon avancé dans mon prog : j'ai une structure : typedef struct{ unsigned short Locate; ch
question d'allocation probleme char char* Question simple [ par youpiyoyo ]
voici mon probleme://///////////////////////////////////////////////////int rec = recv(ns,buffer,64*sizeof(char),0); buffer[rec] = '\0' ; //cout
pb eof en C++ le dernier element est lu 2 fois :( [ par panini21 ]
salut a tousvoila g un prog qui permet de creer une 'bibliotheque de jeux'a savoir :les renseignement du jeu sont le prix, le nom, la descriptiopn et
problème d'execution!!! [ par theidiot ]
Bonjours,je suis débutant en programmation et je suis présentement dans l'apprentissage des tableaux dynamiques.J'ai fait un carnet d'adresse(avec les
Taille d'une structure en mémoire [ par PeteTheBull ]
Bonjour J'ai un petit problème en c++ (sous VC++6). Je défini une structure du style : typedef struct { __int64 B;  
récupérer le handle sur la barre de titre [ par leprov ]
salu a tous.je voudrais récupérer le handle sur ma barre de titre afin de pouvoir changer le curseur de ma fenetre, et que ce curseur reste sur la bar
dlfcn.h [ par Quazar ]
Salut Je cherche des info sur la librairie . Je voudrais savoir dans quel conditions il est préférable que je l'utilise: - dlsym(HANDLE, const ch
char* Hellppppp [ par Mickylord ]
Ma question est :Prenons :char* titre;int compteur;char* ensemble;Comment faire pour que "ensemble" regroupe les deux variables, sachant que :char* ti
Identifiant d'un process [ par Vb6Malade ]
Bonsoir a tous alors voila je veux fermer un process il me faut donc son handle et pour avoir son handle son identifiant(pid) franchement la je rame a
Problème avec taille chaine de caractères variable [ par graphtyrael ]
Bonjour à tous !Je cherche à créer une chaine de caractère de taille variable qui s'agrandit au fur et à mesure que je rentre des caractères. J'ai don
Livres en rapport
|
Derniers Blogs
[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|