我有一个非常基本的程序来打印指向 char 的指针的地址,但是当我运行此代码时,它会导致内存泄漏。
我正在使用termux on android设备。我用来运行该文件的命令是
g++ -Wall -Wextra -fsanitize=address -o out filename.cpp && ./out
#include <iostream>
using namespace std;
int main(void) {
char ch = 'a';
char *ptr = &ch;
cout << ptr << endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
}
输出
=================================================================
==9156==ERROR: AddressSanitizer: stack-buffer-overflow on address 0xfffd3c71 at pc 0xf4de6974 bp 0xfffd3c30 sp 0xfffd3808
READ of size 9 at 0xfffd3c71 thread T0
#0 0xf4de6970 in strlen out/lib/compiler-rt-arm/out/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:372:5
#1 0x4cab5c in std::__ndk1::char_traits<char>::length(char const*) (/data/data/com.termux/files/home/dircpp/out+0x2b5c)
#2 0x4ca144 in std::__ndk1::basic_ostream<char, std::__ndk1::char_traits<char>>& …Run Code Online (Sandbox Code Playgroud)