decNumber.h:
typedef struct {
int32_t digits; /* Count of digits in the coefficient; >0 */
int32_t exponent; /* Unadjusted exponent, unbiased, in */
/* range: -1999999997 through 999999999 */
uint8_t bits; /* Indicator bits (see above) */
/* Coefficient, from least significant unit */
decNumberUnit lsu[DECNUMUNITS]; // decNumberUnit is int16_t and DECNUMUNITS is 1
} decNumber;
Test.cpp:
decNumber a,b,c;
当我打印a,b和c的地址时,这就是我得到的:
a:0x7fff0d7a9858至0x7fff0d7a9864
b:0x7fff0d7a9864至0x7fff0d7a9870
c:0x7fff0d7a987c至0x7fff0d7a9888
a和b之间的0x7fff0d7a9864字节重叠有效吗?该程序最终会遇到分段错误。为什么?
任何帮助是极大的赞赏!
最佳答案
a和b之间的0x7fff0d7a9864字节重叠有效吗?
没有字节重叠。例如,0到5表示[0、1、2、3、4],5到10表示[5、6、7、8、9]。
该程序最终会遇到分段错误。为什么?
不可能。问题中的程序不完整,无法编译。它不会导致分段错误,因为没有可以运行的程序。
关于c++ - 这是有效的内存对齐方式吗?如果没有,应该如何解决?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29017413/