[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux] Re: [devel] Petit soucis avec C.



Hello !

On Sat, Jun 30, 2001 at 04:45:36PM +0200, CHARLIER Philippe wrote:
[.../...]
> #include <stdio.h>
> 
> int main (int argc, char **argv)
> {
> 	char **p_char;
> 	char *pointeur;
> 	int i;
> 		
> 	*p_char = "Bonjour";
        ^^^^^^^

À ce point de ton programme, 'p_char' est indéfini lorsque que tu le
déréférence ! Ce qui se passe par la suite est donc indéfini également.
Tu as de la « chance » que le programme continue ¹.

L'affichage de 'Abandon' se fait en fait  _après_ le retour du main, car
tu as écrasé des données propres à la libc, qui se rend compte d'une
incohérence et fait un abort ().

¹ En fait, c'est plutôt de la malchance, car si ton programme avait
bêtement crashé, tu aurais pu facilement utiliser gdb pour voir sur
quelle instruction.

> 	*(p_char + 1) = "Hello";
> 	*(p_char + 2) = "Goeiedag";
[.../...]

Cu,
Dash.

-- 
For every complex problem there is an answer that is clear, simple, and
wrong.
                -- H. L. Mencken
-- 
Damien Diederen
dash@linuxbe.org
http://users.swing.be/diederen/

[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]