小编Bis*_*ise的帖子

cout 在打印指向 char 的指针地址时导致内存泄漏?

我有一个非常基本的程序来打印指向 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)

c++ memory-leaks char

5
推荐指数
1
解决办法
94
查看次数

标签 统计

c++ ×1

char ×1

memory-leaks ×1