На машине little endian я пытаюсь исследовать память следующих переменных, используя GDB.
int main()
{
char buffer[4] = "1234";
int value = 0x31323334;
//ascii - "1 2 3 4"
retun 0;
}
То, что я ожидал увидеть, было:
Для переменной буфера - 0x34333231 Для переменной значения - 0x34333231
Однако вывод проверки GDB:
(gdb) show endian
The target endianness is set automatically (currently little endian)
(gdb) x/w &value
0x7fffffffe440: 0x31323334
(gdb) x/w buffer
0x7fffffffe444: 0x34333231
Почему существует разница в хранении данных массива int и char в памяти?Похоже, переменная значения хранится как big endian, я что-то упустил?