这Valgrind警告是什么意思? – 警告设置地址范围烫发

当我运行我的程序对valgrind,我遇到了以下警告。

Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) 

经过一番search之后,我发现这是一个Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions ,这些信息没有告诉我多less。

我的程序确实在堆上分配了大量的内存。 (一堆realloc后可以达到2-3 GB的RAM)

然而,尽pipe没有任何分配失败,警告仍然出现。

所以,我想知道这个消息是什么意思? 我没有某种内存许可? (但分配成功)

One Solution collect form web for “这Valgrind警告是什么意思? – 警告设置地址范围烫发”

这只是意味着权限改变了一个特别大的内存块。

这可能是因为像mprotect的调用,或者当一个非常大的内存分配或解除分配发生时 – 例如,一个mmapmunmap调用。

你列出的第一个是设置大约320Mb的内存undefined这是最有可能的一个新的分配,将被标记为最初未定义。 其他人都设置相似大小的块到noaccess ,这可能涉及到内存的释放。

  • 是否有可能使valgrind忽略某些图书馆?
  • 精确定位“有条件的跳转或移动取决于未初始化的值”(valgrind消息)
  • valgrind如何工作?
  • Valgrind:使用<iostream>,仍然可以使用普通程序访问内存
  • 优胜美地和Valgrind
  • Valgrind尽pipe使用-g标志(在Ubuntu 11.10 / VirtualBox上)仍然没有显示行号,