小编wil*_*rcs的帖子

为什么cerr刷新cout的缓冲区

#include <iostream>
using std::cout;
using std::endl;
using std::cerr;
#include <cstdio>

int   main( )
{
    char pbuffer[BUFSIZ];
    setbuf(stdout, pbuffer);
    cout << "hello cout" ;
    sleep(5);
    cerr << "hello cerr";
    sleep(5);
    cout << "\nAll   done " << endl;
    sleep(5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我编译并运行上面的程序之后,它的输出是:

hello couthello cerr
All   done 
Run Code Online (Sandbox Code Playgroud)

但我认为它应该是:

hello cerrhello cout
All   done 
Run Code Online (Sandbox Code Playgroud)

我想知道,为什么要cerr冲洗缓冲区cout

c++

7
推荐指数
2
解决办法
3665
查看次数

为什么!address和!heap的输出不匹配?

我在Windbg中调试以下C程序:

int main()
{
    size_t size = 500*1024*1024;
    void *p = malloc(size);
    memset(p, 'a', size);
    printf("%p", p);
}
Run Code Online (Sandbox Code Playgroud)

我使用:cl/Zi leak.c编译程序,并生成了一个leak.exe.

我在printf行设置了一个断点.我运行以下命令:

0:000> !address -summary

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                     21          5f0f6000 (   1.485 Gb)           74.27%
Heap                                      3          1f501000 ( 501.004 Mb)  95.07%   24.46%
<unknown>                                39           1436000 (  20.211 Mb)   3.84%    0.99%
Image                                    35            300000 (   3.000 Mb)   0.57%    0.15%
MappedFile                                4            182000 (   1.508 Mb)   0.29%    0.07%
Stack                                     3            100000 (   1.000 Mb) …
Run Code Online (Sandbox Code Playgroud)

memory windbg

5
推荐指数
1
解决办法
697
查看次数

标签 统计

c++ ×1

memory ×1

windbg ×1