Re: bug?

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

 



Alexey,

Array bounds checks are not performed in C or C++.

You are writing to memory outside of the array, and it is an error in
the code.  You probably do not crash because the program is simple.

cout does not know the size of the array.  It only sees a char* and
keeps looking forward 1 byte at a time until a 0 is found.

corey

On 8/25/05, Alexey Sokolov <sokolhacker@xxxxxxx> wrote:
> Hallo!
> /**************************/
> //example file "example.cpp"
> //begin
> #include <iostream.h>
> 
> main()
> {
>          char name[1]; //1 byte(!)
>          name[0]='1';
>          name[1]='2';
>          name[2]='3';
>          name[3]='4';
>          name[4]='\0';
>          cout << name << "\n";
> }
> //end
> /**************************/
> 
> $g++ example.cpp
> $./a.out
> 1234
> 
> 1,2,3,4 and '\0' = 5 byte!
> 5 byte != 1 byte (char name[1];)!
> 
> But why? Forgive for English, I am simple Russian =)
> 
> --
> #gcc --version
> gcc (GCC) 3.4.2 [FreeBSD] 20040728
> 
>


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux