Creer grande char*

Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 - 10 avril 2005 à 22:45
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 11 avril 2005 à 19:13
Bonsoir,

J'ai un pb!!! Avec un de mes logiciels j'aurais besoin d'un grand char* (qui peut avoir beuacoup de caractère genre 50 000) et je n'ai aucune idée de comment le construire! J'ai biensur fait char chaine[50000] mais vu le résultat obtenu je doute de la bonne allocation de mémoire à cte chaine...
Une idée ??

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))

8 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 avril 2005 à 00:13
VirtualAlloc

ciao...
BruNews, MVP VC++
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
11 avril 2005 à 08:22
Merci BruNews, mais j'ai encore un souci...j'ai essayé cette fonction avec les param expliqués sur msdn...le but est donc de faire un char* de 50000 octects..je m'y suis pris comme cela :

char* szOnlineList, *szOfflineList;

VirtualAlloc((LPVOID) &szOnlineList, 50000, MEM_COMMIT, PAGE_READWRITE);
VirtualAlloc((LPVOID) &szOfflineList, 50000, MEM_COMMIT, PAGE_READWRITE);

Le problême c'est qu'après les chaines subissent des strcpy(), strcat(), wsprintf() et donc l'utilisation de "pointeurs" fait planter le programme...je serais bien tenter d'utiliser le type LPSTR mais dans certaines fonctions comme send() j'ai besoin d'envoyer un char*....

Cela vient-il peut-etre des paramètres MEM_COMMIT ou PAGE_READWRITE
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
11 avril 2005 à 08:23
euh, en fait ya pas de "&" devant les szOnlineList et offlinelist présents dans mon code (jme euis trompé en le recopiant ici)

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 avril 2005 à 09:16
szOnlineList = VirtualAlloc(NULL, 50000, MEM_COMMIT, PAGE_READWRITE);
0

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

Posez votre question
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
11 avril 2005 à 10:03
Merci ymca, mais la chaine affichée à l'aide d'une MessageBox() reste tronquée alors qu'elle ne contient même pas 1000 caractères.... :( pourtant j'ai fais comme tu as dit :

char* szOnlineList;

szOnlineList = (char*) VirtualAlloc(NULL, 20000, MEM_COMMIT, PAGE_READWRITE);

lstrcpy(szOnlineList,"- [mailto:gendal67@hotmail.com gendal67@hotmail.com] (En ligne)\r\n"
"- [mailto:gendal67@hotmail.com gendal67@hotmail.com] (En ligne)\r\n"
"- [mailto:gendal67@hotmail.com gendal67@hotmail.com] (En ligne)\r\n"
"- [mailto:gendal67@hotmail.com gendal67@hotmail.com] (En ligne)\r\n"
"- [mailto:gendal67@hotmail.com gendal67@hotmail.com] (En ligne)\r\n"
..... (ECRIT X FOIS)

MessageBox(0, szOnlineList, ";)", 0); // n'en affiche que 29 dont la 29éme tronquée! :(

peut-etre ls strcpy() qui n'est pas approprié
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 avril 2005 à 10:11
Ou alors c'est MessageBox qui n'est pas approprié pour afficher tant de ligne, faudrait l'écrire dans un fichier pour voir.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 avril 2005 à 11:00
50000 au dernières nouvelles c'est pas si énorme que ca, pourquoi vous utilisez VirtualAlloc et non HeapAlloc?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 avril 2005 à 19:13
Tout à fait.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous