[C/C++] Initialisation mémoire

Salut,

Je voulais savoir s’il était possible de mettre des options durant qui compilation qui, quand on lance le programme, met toute la mémoire allouée pour les variables à 0. Ou alors on est obligé de le faire manuellement pour toutes les variables, par exemple :
int i = 0;
char c = 0;
double *d = calloc(…, …);

edit : et si on ne peut le faire que manuellement, y-a-t’il un moyen de faire un realloc() en initialisant la zone de mémoire réalloué avec que des 0 car j’ai vu que ça fonctionnait comme un malloc : “Le contenu de la zone de mémoire nouvellement allouée n’est pas initialisé.”.

Merci.
:kimouss:

memset est ton ami.

fait du java, là tu sera sur d’avoir des trucs alloués à NULL ? :o

(sinon c’est compiler dependant ça…)

ça c’est méchant, cynique et de mauvaise foi. :pfff:
Les tableaux d’int en Java sont bien initialisé à 0.

Ok, merci, mais autant allouer avec calloc dès le début je pense.

C’est au boulot donc je n’ai pas le choix du langage :D. Puis en plus c’est pas à NULL que je veux que ça soit alloué mais 0, d’accord c’est nul pour les variables, mais pour les tableaux je veux toutes les cases à 0 et non pas le pointeur du tableau à NULL.

Ouep, d’ailleur ça me fait penser que je ne sais pas à quoi sont initialisés les tableaux en C déclarés comme en java (int tab[15]; par exemple).

Merci à vous trois.
:kimouss:

GrosTony> non mais je ne fais que te dire que en java c’est par défaut, et que ce que tu veux c’est une option qui dépend du compilateur.

Alors éventuellement tu peux faire ça :

union {
  int var1;
  int i = 0;
  double[10]
} x = {};

Normalement, et encore une fois c’est compilateur dependant, tu devrais avoir tout à zéro. (mais bref, vaut mieux le faire soi même)

Oki, merci, je penche pour l’option le faire moi même :D.
:kimouss: