gpt4 book ai didi

c++ - 为什么指向指针的取消引用指针的 std::cout 导致 -fsanitize=address 提示?

转载 作者:太空宇宙 更新时间:2023-11-04 15:58:26 25 4
gpt4 key购买 nike

char t = 'a';
char * p1 = &t;
char** p2 = &p1;
std::cout << p2 << " " << *p2 << " " << **p2 << '\n';

我正在使用 clang 和 -fsanitize=address,它提示内存访问溢出变量并终止我的程序,但是当我使用 gdb 单步执行时,我可以看到是的,一切都已定义,它应该打印两个地址,后跟 'a '.

如果我删除中间的“*p2”,它运行良好,即打印一个指向导致我出现问题的指针的半解引用指针。

最佳答案

std::cout 假定所有 char* 都指向空终止字符串。如果您需要地址,请将其转换为 void*

关于c++ - 为什么指向指针的取消引用指针的 std::cout 导致 -fsanitize=address 提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com