小编mol*_*iad的帖子

分配ram显示任务管理器中ram使用量的两倍

做一些分析(记忆和速度)我已经被win7似乎分配了我要求的RAM的两倍......这注意这是我第一次在win7上进行这样的活动分析,所以我不知道我真的知道会发生什么.

我在win7(64位)下使用MSVC的快速版本在循环中分配精确数量的RAM.应用程序已编译并以32位运行.

我分配了24 MB的ram,任务管理器将我的应用程序显示为使用48MB(在所有内存列下,包括已提交,因为我实际上是在新区域内进行memcopy).当我得到24个(现在应该是48MB)时,我的应用程序会跳到96,等等.

这些被分配为1,000,000个24字节结构.

我在网上搜索过,但没有找到任何与我的观察完全一致的内容.

有人有线索吗?

如果这只是操作系统欺骗(或无能?),是否有任何工具可以给我一个进程的实际内存消耗?(很难找到泄漏,当应用程序开始时;-)

[-----------编辑,附加信息-----------]

注意(通过控制台标题栏中的路径)我在发布模式下构建(使用MSVC 2010的所有默认"空"项目设置),因此没有分配额外的"调试"内存(这可能相当广泛)一些项目).

这是一个简短,完整的C应用程序,说明了行为:

#include <stdio.h>
#include <assert.h>
#include <conio.h>
#include <stdlib.h>
typedef unsigned int u32;
typedef struct myStruct MYS;
struct myStruct {
    u32 type;
    union {
        u32 value; 
        char * str;
        void * data;
        MYS ** block;
        MYS * plug;
    };
    u32 state, msg,  count, index;
};
int main(int argc, char *argv[]){
    int i, j;
    MYS *ref;
    printf ("size of myStruct: %d\n\n", sizeof(MYS));
    for(i=0; i < 10; i ++){
        printf("allocating started...\n"); …
Run Code Online (Sandbox Code Playgroud)

c malloc windows-7

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

标签 统计

c ×1

malloc ×1

windows-7 ×1