小编ash*_*fie的帖子

Realloc()无法正确释放Windows中的内存

我试图在Windows应用程序中使用realloc().我正在分配一大块内存,然后在我知道正确的大小后使用realloc()将其缩小.

我发现虽然realloc()似乎工作正常(任务管理器中的内存反映了你的期望),但应用程序最终会耗尽内存.从我所知道的情况来看,就好像relloc()释放内存但不释放与内存关联的虚拟地址空间.结果,malloc()最终会失败.

这是一个小型控制台应用程序,用于演示此问题:

int _tmain(int argc, _TCHAR* argv[])
{
    static const DWORD dwAllocSize = (50 * 1024 * 1024);
    static const DWORD dwReallocSize = 10240;
    static const DWORD dwMaxIterations = 200;

    BYTE* arpMemory[dwMaxIterations];
    memset( arpMemory, 0, sizeof(arpMemory) );

    for( DWORD i = 0; i < dwMaxIterations; i++ )
    {
        arpMemory[i] = (BYTE*) malloc( dwAllocSize );
        if( !arpMemory[i] )
        {
            printf("OUT OF MEMORY after %d iterations!\n", i);
            return -1;
        }

        BYTE* …
Run Code Online (Sandbox Code Playgroud)

memory windows realloc

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

标签 统计

memory ×1

realloc ×1

windows ×1