|
|
|
|
|
by jussij
1473 days ago
|
|
Not always. Consider this 'test.cpp' example: #include <stdio.h>
#include <string.h>
struct a_struct {
char a[1];
char b[2];
a_struct() {
strcpy(a, "");
strcpy(b, "b");
}
} x;
int main() {
printf("before:\n");
printf("a : '%s'\n", x.a);
printf("b : '%s'\n", x.b);
char *c = &1[x.a];
*c = 'c';
printf("after:\n");
printf("a : '%s'\n", x.a);
printf("b : '%s'\n", x.b); //b is now corrupt
}
Compile and running this code: C:\temp>g++ test.cpp
C:\temp>a.exe
before:
a : ''
b : 'b'
after:
a : ''
b : 'c'
|
|