yyd
yyd

Reputation: 33

the alignment of char array is 4 byte?

tools & platform: gcc-arm-none-eabi-4_9, cotrex-M4F

when I declaration const char variables, the alignment of memory map seems likes difference between const char bb and const char bb[1]

case A:

const char aa = 0;
const char bb = 1;
const char cc = 2;

.rodata.aa
                0x0005dbb0        0x1 ./source/main.o
                0x0005dbb0                aa
.rodata.bb
                0x0005dbb1        0x1 ./source/main.o
                0x0005dbb1                bb
.rodata.cc
                0x0005dbb2        0x1 ./source/main.o
                0x0005dbb2                cc

case B:

const char aa = 0;
const char bb[1] = {1};
const char cc = 2;

.rodata.aa
                0x0005dbb0        0x1 ./source/main.o
                0x0005dbb0                aa
*fill*          0x0005dbb1        0x3
.rodata.bb
                0x0005dbb4        0x1 ./source/main.o //why align to 4 byte here?
                0x0005dbb4                bb
.rodata.cc
                0x0005dbb5        0x1 ./source/main.o
                0x0005dbb5                cc

case C:

const char aa = 0;
const char bb[1] __attribute__ ((aligned (1))) = {1};
const char cc = 2;

.rodata.aa
                0x0005dbb0        0x1 ./source/main.o
                0x0005dbb0                aa
.rodata.bb
                0x0005dbb1        0x1 ./source/main.o
                0x0005dbb1                bb
.rodata.cc
                0x0005dbb2        0x1 ./source/main.o
                0x0005dbb2                cc

why, const char bb[1] align to 4 byte ?

how to make const char bb[1] align to 1 byte, like const char bb

Upvotes: 1

Views: 425

Answers (0)

Related Questions