笑故挽风
2018-11-11 15:52Gdb 软阵列打印阵列
#include <stdio.h>
#include <malloc.h>
typedef struct _soft_array
{
int len;
int array[];//int array[0];
}SoftArray;
int main()
{
int i = 0;
SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10);
sa->len = 10;
for(i=0; i<sa->len; i++)
{
sa->array[i] = i + 1;
}
for(i=0; i<sa->len; i++)
{
printf("%d\n", sa->array[i]);
}
free(sa);
return 0;
}
I use gdb to print the array of sa->array,then something confuse me:
(gdb) p sa->array
$1 = 0x602014
(gdb) p *sa->array@10
$2 = {[0] = 1, [1] = 2, [2] = 3, [3] = 4, [4] = 5, [5] = 6, [6] = 7, [7] = 8, [8] = 9, [9] = 10}
(gdb) p sizeof(int)
$3 = 4
(gdb) p *(char *)0x602014@40
$4 = "\001\000\000\000\002\000\000\000\003\000\000\000\004\000\000\000\005\000\000\000\006\000\000\000\a\000\000\000\b\000\000\000\t\000\000\000\n\000\000"
(gdb)
the first method went well (I add set print array-indexes on in .gdbinit).
sizeof(int)==4,then I use p *(char *)0x602014@40,due to my computer is little-endian,so 1 display with 01 00 00 00.
When display 7,the output become a?
How does that happen or I miss something ?
转载于:https://stackoverflow.com/questions/53250451/gdb-print-array-of-soft-array
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 如何使用GDB正确调试`go test -c`生成的二进制文件?
- gdb
- 4个回答
- 无法加载runtime-gdb.py
- gdb
- eclipse
- 2个回答
- 在macOS上使用GDB调试Go程序
- gdb
- 1个回答
- GDB无法在cgo代码中调试go程序
- cgo
- debugging
- gdb
- 1个回答
- 如何使用gdb调试golang代码查看通道内部内容?
- concurrency
- debugging
- channel
- gdb
- 1个回答
换一换