1

我想知道是否有办法在某个函数调用或程序之前和之后计算内存空间......类似于时间戳来计算执行时间......

我问这个是因为我想测试我的代码在内存空间方面的性能,因为我正在使用tree数据结构......而且我需要在辩护中展示我的项目在某些方面的性能......

我正在使用窗户

4

2 回答 2

4

要找出名为 的结构使用的字节foo,可以使用sizeof(struct foo).

POSIX.1 说您可以调用getrusage()来了解您正在使用多少内存。

许多 C 实现将允许您调用sbrk(0)来获取当前的“内存顶部”地址。

在 Windows 上,您可以使用GetProcessMemoryInfo()

其他平台可能有与这些类似的其他调用,但如果所有其他方法都失败了,您可以包装malloc()free()使用跟踪您有兴趣跟踪的数据使用情况的版本。

于 2013-04-27T12:34:20.173 回答
3

它可能是特定于平台/编译器的。在 unix/Linux/etc 中,您可以使用sbrk(0)查找内存的结尾

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
    char *start, *data, *end;
    start = sbrk(0);
    printf("%p\n", start);
    data = malloc(243);
    end = sbrk(0);
    printf("%p\n", end);
    printf("diff: %ld", (long)(end - start));
    return 0;
}

输出(Cygwin):

0x80020000
0x80050000
diff: 196608
于 2013-04-27T12:28:33.707 回答