相关疑难解决方法(0)

是否需要取消分配本地时间的内存?

void log(){
    time_t current = time(0);
    tm *ptm = localtime(&current);
        stuf...
}
Run Code Online (Sandbox Code Playgroud)

只是想确定 - 我需要在方法结束时释放tm指针分配的内存吗?

c++ memory-management

18
推荐指数
2
解决办法
6924
查看次数

Valgrind喜欢Mac OS 10.7(Lion)上的工具

我需要一个工具,帮助我以类似的方式找到ac程序中的内存泄漏.它应该计算出程序何时覆盖它不应该存在的内存(例如,通过错误计算数组索引).我了解到泄漏实用程序以及图形仪器应用程序.

但是我认为它可以找到分配了新的(或malloc)的内存,这些内存未被释放且不再可访问.我还了解到valgrind应该适用于旧版本(10.5和10.6),但我使用的是Lion(10.7).

c macos memory-leaks

8
推荐指数
2
解决办法
5107
查看次数

Valgrind报告在OS X 10.8.1上泄露了内存

我在Mountain Lion的OS X 10.8.1上使用Valgrind版本3.8.0.关于与10.8.1的兼容性,Valgrind的网站说(italics mine):

Valgrind 3.8.0适用于 {x86,amd64} -darwin(Mac OS X 10.6和10.7,支持10.8).

那么,我知道10.8.1只有"有限的支持".尽管如此,这个错误报告说(斜体矿):

这个(最新的3.8.0版本)使Valgrind 编译并能够在OSX 10.8上运行小程序.但是请注意,它仍然使用更大的应用程序断言,并且根本没有正确检查32位程序(Memcheck错过了大多数错误).

好没关系.因此,如果气质,Valgrind应该在10.8.1上工作.所以现在我的问题是:

我能够很好地让Valgrind在10.8.1上编译,但是当我在几个小C程序上运行它时,我看到了一些奇怪的结果.为了尝试减少问题的可能原因,我最终编写了以下"程序":

int main () {                                                               
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我会说,不是很令人兴奋,而且很少有虫子的余地.然后,我编译并通过Valgrind运行它:

gcc testC.c
valgrind ./a.out
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

==45417== Command: ./a.out
==45417== 
==45417== WARNING: Support on MacOS 10.8 is experimental and mostly broken.
==45417== WARNING: Expect incorrect results, assertions and crashes.
==45417== WARNING: In particular, Memcheck on 32-bit programs will fail to
==45417== WARNING: detect any errors associated with heap-allocated …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks osx-mountain-lion

5
推荐指数
2
解决办法
4134
查看次数