pourquoi ça ne plante pas ? [C] - C - Programmation
Marsh Posté le 21-12-2003 à 16:12:48
1) cast inutle
2) sizeo(char) == 1 par définition
3) par ce que la zone mémoire contigue t'appartient sans doute. cela dit ça peut tout et n'importe quoi ... des fois on tape sur un truc dans la pile qui sert au retour de la fonction et boom
4) utilise Electric Fence, pour plus de sécurités
Marsh Posté le 21-12-2003 à 16:32:51
mais imagine j'ai un tableau de 2 caractères.
Code :
|
jusque là pas de problème.
par contre si ensuite je veux augementer la taille de mon tableau, c'est là que je ne suis pas sûr de la syntaxe et c'est pour ça que l'absence d'erreur dans le code précédent me gène.
est-ce que ceci est ok ?
Code :
|
Marsh Posté le 21-12-2003 à 16:43:09
Taz a écrit : 1) cast inutle |
Marsh Posté le 21-12-2003 à 16:46:29
je vois pas la réponse à ma question dans ton post... :-/
Marsh Posté le 21-12-2003 à 16:48:00
la réponse est « c'est normal »
commence par prendre en compte mes 4 remarques
Marsh Posté le 21-12-2003 à 17:15:52
si ça plante pas (segfault, ou page fault), ça peut être dû à la granularité/alignement de l'allocation (allocation par paquets de x octets, de toutes façon les os allouent de la mémoire aux process par pages de 4ko ou 4mo dans le cas de cpus x86).
Marsh Posté le 21-12-2003 à 17:32:15
j'sais pas si j'ai du mal ou pas mais je ne pige tjrs pas.
est-ce que le code suivant est bien correct ou non ???
Code :
|
Marsh Posté le 21-12-2003 à 17:32:53
BJOne a écrit : si ça plante pas (segfault, ou page fault), ça peut être dû à la granularité/alignement de l'allocation (allocation par paquets de x octets, de toutes façon les os allouent de la mémoire aux process par pages de 4ko ou 4mo dans le cas de cpus x86). |
non, ça n'est pas la raison. ça ne plante pas parce que tu te balades dans une zone qui t'appartient également, même si éthiquement tu n'en as pas le droit
Marsh Posté le 21-12-2003 à 17:33:23
Taz a écrit : 1) cast inutle |
sinon oui il est correct
Marsh Posté le 23-12-2003 à 00:52:58
yep mais apparement efence a pas été installé avec ma mandrake. faut que je vois où dw ça..
Marsh Posté le 21-12-2003 à 16:08:42
bon je débute encore avec les pointeurs et je pige pas un truc.
ce code marche parfaitement (sous mandrake). ça devrait pas plutôt faire un segfault (car j'ai pas fait un malloc(4*sizeof.. ) ?
si c'est bien le cas, y'a un moyen de faire en sorte que ça plante vraiment ? (sinon c'est dûr après pour moi de tester)