qtu*_*tug 5 c++ memory-management
考虑一下这段代码的输出:
char A = 'a'; char B[] = "b"; cout<<&A;
它输出"AB"(的串联A和B),我不知道为什么.请解释一下这个.
A
B
Sam*_*hik 15
因为&A是char *.由a表示的字符串char *需要具有'\0'终止字节.
&A
char *
'\0'
&A指向单个char,没有跟随'\0'.因此,尝试打印此文本字符串会导致未定义的行为.
char
Tho*_*ser 0
这是依赖于编译器的行为。通常,A 和 B 将在堆栈上一个接一个地分配。获取 A 的地址将类似于以零结尾的字符串“ab”。不要这样做!您依赖于编译器正在构造的堆栈帧布局。
归档时间:
8 年,10 月 前
查看次数:
313 次
最近记录:
6 年,9 月 前