Pb d'allocation memoire pour des tableaux char

kollibar Messages postés 45 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 31 janvier 2006 - 7 sept. 2004 à 22:33
kollibar Messages postés 45 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 31 janvier 2006 - 9 sept. 2004 à 19:16
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 * identifiant
au moment d imprimer le resultat a l ecran, la variable identifiant est normal mais la variable titre contient la variable identifiant:

328088:Invite de comman32808

au lieu de

328088:Invite de commande - edit testfen.cpp
et 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

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

36 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 16:37
ca ve dire quoi jase ?
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
9 sept. 2004 à 16:38
je jase plus de <-> je parle plus de

:}

~(.:: NitRic ::.)~
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 16:41
ok c'est bon, je viens de comprendre les 5 derniers message
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 sept. 2004 à 16:42
ric> pense ce que tu ve; je detaille un fait, C tt

djl>
bs dit de ne pas utiliser malloc/free en c++ car pas definition tous les types sont des objets et seuls new/delete et new[]/delete[] construisent/detruisent les objets

parfaitement d'accord

mé vs autres qui etes a fond perf,
la copie systématique ne genere pas une perte de tps & de ressources?

Magic Nono: l'informagicien! 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 16:47
quand je suis a fond dans les perfs j'utilise tant que possible un tableau statique

Don?t use malloc(). The new operator (§6.2.6) does the same job better, and instead of
realloc(), try a vector
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
9 sept. 2004 à 16:51
Bah ... c'était pas méchant ce que j'ai dis :}
et heu ... c'est NitRic pas ric =P

dans le pire des cas: char buffer[ 1024 ];
1024 caractères dans une barre de titre c'est plutôt rare
et comme ca, plus de new/delete! Youpi!

~(.:: NitRic ::.)~
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 sept. 2004 à 16:52
ui on en a deja parlé

k

Bonne prog

Magic Nono: l'informagicien! 8-)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 sept. 2004 à 16:55
NitRic > k
mé bien penser à vérifier la taille avt le strcpy

on C js....

++

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 16:58
strncpy et sizeof buffer sont nos amis
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
9 sept. 2004 à 16:58
Évidement ... tout comme avec les allocations dynamiques ...

pourquoi cette remarque !?

~(.:: NitRic ::.)~
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
9 sept. 2004 à 16:59
Exact.

~(.:: NitRic ::.)~
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 sept. 2004 à 17:01
car comme dis ici ou ailleurs,
on signal les ecueils fréquents

Djl : avantage strncpy versus strcpy?

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 17:03
bounds check :)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
9 sept. 2004 à 17:04
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
9 sept. 2004 à 17:09
ui
dc effectivt util ici...

Magic Nono: l'informagicien! 8-)
0
kollibar Messages postés 45 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 31 janvier 2006
9 sept. 2004 à 19:16
en tt cas merci

pour le cas ici j croi q j vai faire un plus gros tableau mais maintenant j connai un chtit peu + tt ça... ca va servir

KOLLIBAR bare
0
Rejoignez-nous