begin process at 2010 03 22 13:32:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

allocation statique


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

allocation statique

jeudi 12 août 2004 à 19:30:49 | allocation statique

imanewin32

slt
je réalise une application MFC et ds une de mes classes j'ai fais l'allocation ds le constructeur de la façon:
chemain=new char[MAX_PATH+1];
comme j'ai l'habitude de faire mais on m'a proposé de faire une allocation statique vue que le nombre d'octet à allouer est tjrs fixe
j'ai pas compris ça!!!
si quelqu'un à une idée ,qu'il m'aide
merci d'avance!!!!!!!
jeudi 12 août 2004 à 19:38:04 | Re : allocation statique

imanewin32

est ce que cela veut dire tout simplement travailler avec des tableaux de caractères
jeudi 12 août 2004 à 20:19:51 | Re : allocation statique

Arnotic

Administrateur CodeS-SourceS
Imagine un char szBuff[512];
Tu as un buffer de 512 octets, dans lequels tu peux te déplacer grace au pointeur (adresse qui pointe sur cette zone mémoire).

strcpy(szBuff+256, "bonjour");
MessageBox(GetFocus(), szBuff+256, "debug", 0x40);

Affiche par exemple les octets qui se trouve à la 256eme position de ton buffer jusqu'a un 0 final.

Quoi voilà après tu peux ce que tu veux dans cet espace memoire et t'y déplacer grace à un pointeur.

@+
Arnotic,
Admin CS, MVP Visual C++
vendredi 13 août 2004 à 10:23:44 | Re : allocation statique

essirc

Salut,

Cela signifie tout simplement qu'au lieu d'avoir :

class LaClasse {
...
private :
char * chemain;
...
};

dans ta classe, tu peux écrire :

private :
char chemain[MAX_PATH + 1];

et que tu peux enlever :
chemain=new char[MAX_PATH+1];
de ton constructeur, et :

delete [] chemain; de ton destructeur

Voilà c'est tout :)


P.S : Dans les deux cas tu travailles avec des tableaux de caractères.
vendredi 13 août 2004 à 13:27:20 | Re : allocation statique

djl

et le constructeur de copie et l'operateur = ??

vendredi 13 août 2004 à 18:28:26 | Re : allocation statique

pjb

une allocation statique est une allocation mémoire qui se fait en gros en entrant dans un bloc ("{ ... }"); elle est statique car les emplacements mémoires sont déjà prévus avant la compilation

ex: int i[10]; // 10 est bien une CONSTANTE

en revanche, une allocation dynamique est une allocation qui peut se produire n'importe quand dans un programme (non prévue avant compilation)

par ex:
int *n; /* ........... */
n = (int*)malloc( x * sizeof(int) ); /* x : VARIABLE (non nécessairement constante comme 10 au dessus) */

le C interdit par ex. l'allocation dynamique suivante : int i[ x ];
(même si t'as mis x = 10 juste avant avant)

(essirc donne un bon exemple ci-dessus : MAX_PATH est une constante avant la compilation car macro d'ou alloc. stat.)

@+
j'espère avoir été clair
vendredi 13 août 2004 à 19:41:14 | Re : allocation statique

djl

c99 autorise int i[ x ]; si x est specifier const

le cast de malloc est inutile

en dynamique on alloue sur le tas et en statique dans la pile (pour une fonction)


plutot que faire

void func()
{
char c[ MAX_PATH ];
}

pour ne pas encombrer la pile on peut faire

void func()
{
static char c[ MAX_PATH ];

}

ou

void func()
{
char *c;

c = malloc( MAX_PATH );

free(c);
}

la premiere solution est la plus performante mais la zone memoire est la meme pour chaque appel
samedi 14 août 2004 à 13:46:32 | Re : allocation statique

pjb

1: je parle du C, et la norme ne prévoit pas de faire int i[ x ];

2: le cast de malloc est certes (souvent) inutile mais fortement conseillé pour des raisons de portabilité : certains compileurs te gètent si tu ne fais pas le cast, ou tout simplement des warnings peuvent avoir lieu...

3: "en dynamique on alloue sur le tas et en statique dans la pile (pour une fonction) [...] "
tu as tout-à fait raison, mais je ne crois pas qu' imanewin32 attendait une réponse "technique" comme celle-ci, je ne suis pas sur qu'il va la comprendre (sinon il ne poserait pas des questions comme celle-là)

@bientot
samedi 14 août 2004 à 16:23:06 | Re : allocation statique

djl

"je parle du C, et la norme ne prévoit pas de faire int i[ x ];"

on parle pas de norme, le standard autorise int i[ x ]; si x est const, apres precise si tu parle de c ansi (c89) ou c99

samedi 14 août 2004 à 18:48:25 | Re : allocation statique

pjb

tu as effectivement raison, j'ai dit une grosse annerie (je n'avais pas vu le qualifieur CONST dans ta phrase)

je voulais lui expliquer la diff entre stat. et dyn. simplement, de manière un peu vulgarisée, sans trop entrer dans tous les détails (notamment "const"), mais t'as raison de me le faire remarquer...

@bientot

1 2

Cette discussion est classée dans : ds, allocation, statique


Répondre à ce message

Sujets en rapport avec ce message

Allocation statique de tableaux de taille importante [ par THEwarrior333 ] Bonjour, je me demandais s'il était possible de connaître la mémoire disponible sur la pile, car en tentant d'allouer des tableaux de taille très impo allocation dynamique d'un tableau [ par elpens ] Bonjour à tous,J'ai trouvé quelques thème sur ce forum concernant ma question, mais je n'arrive pas à l'appliquer...J'aimerai allouer dynamiquement la récupération de données de taille inconnue dans le main [ par fatenov ] Salut tout le monde, Je veux récupérer dans le main le contenu d'une variable calculée dans un module dans le main, mais le problème est que la tail Librairie Statique [ par Kebims78 ] Bonjour à tous.Afin de pouvoir réutiliser des fonctions déjà écrite, je souhaiterai créer une librairie statique sous Visual C++. Je me suis orienté v Allocation contigue [ par forest123 ] Bonjour tous le monde, En faite j'ai un code qui utilse un tableau de 4 dimesions (12*x*y*z), j'alloue ce tableau avec (un seul pointeur) un tableau p Aide exercice C [ par lkaiman ] Bonjour a tousJ'espère que Nowël s'est bien passé pour tous le monde, et que bien sur le nouvel an sera encore meilleur_______________________________ Classes et allocation dynamique C++ [ par CCJ ] Salut.Question tres simple :Est il possible de declarer un tableau de classes dynamiquement et de le "resize" par la suite ?Si l'informatique été de l Jeux etautres [ par jeanphilippe37 ] slt, je voulais avoir "quelques tuyaux" pour programmer un prgm. Voila, je connais bien le c++ maintenant, ms comment dois je faire pour programm Erreur "invalid allocation size"/dll [ par guizmo83 ] Bonjour à tous,Je n'ai pas l'habitude de poster sur les forums, alors svp soyez indulgents!Je souhaite faire une dll à utiliser à travers une macro VB


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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 : 0,265 sec (3)

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