小编mar*_*aia的帖子

包含向量的已分配结构的内存泄漏

我遇到了一个问题,当我在结构中有一个std :: vector时,我堆分配该结构,当结构被释放时,向量泄漏.有关如何防止这种情况的任何想法?

这是代码:

#include <cstdlib>
#include <string>
#include <vector>

struct foo {
  std::vector<std::string> bar;
};

const std::vector<std::string> kSample = {"test", "1", "2", "3", "4", "5"};

int main(int argc, char *argv[]) {
  struct foo *allocated = new foo;
  for (const auto& i : kSample) {
    allocated->bar.push_back(i);
  }
  free(allocated);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是运行此代码的valgrind结果:

==18131== 192 bytes in 1 blocks are definitely lost in loss record 51 of 76
==18131==    at 0x6DFB: malloc (in /usr/local/Cellar/valgrind/3.9.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==18131==    by 0x4728D: operator new(unsigned long) (in …
Run Code Online (Sandbox Code Playgroud)

c++ struct memory-leaks vector

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

标签 统计

c++ ×1

memory-leaks ×1

struct ×1

vector ×1