用using namespace std; 为什么会有内存泄漏?解决思路
用using namespace std; 为什么会有内存泄漏?
#include <crtdbg.h>
#include "iostream " //
using namespace std; //#include <iostream.h>
void main()
{
_CrtDumpMemoryLeaks();
}
//Debug Info:
Detected memory leaks!
Dumping objects ->
{46} normal block at 0x00371068, 33 bytes long.
Data: < C > 00 43 00 CD CD CD CD CD CD CD CD CD CD CD CD CD
{45} normal block at 0x00371000, 40 bytes long.
Data: < C > EC 11 43 00 16 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
而且如果main函数中进行了内存的操作,内存泄漏更多。如下:
void main()
{
int n = 10;
int num;
cin> > num;
int *p = new int[sizeof(int)*num];
int *q = p;
p = &n;
delete q;
q = NULL;
_CrtDumpMemoryLeaks();
}
//Debug Info:
Detected memory leaks!
Dumping objects ->
{69} normal block at 0x00372BE0, 5 bytes long.
Data: <true > 74 72 75 65 00
{68} normal block at 0x00372B98, 6 bytes long.
Data: <false > 66 61 6C 73 65 00
{67} normal block at 0x00372B50, 1 bytes long.
Data: < > 00
{62} normal block at 0x003727A8, 24 bytes long.
Data: < F P+7 . > F8 F2 46 00 01 00 00 00 50 2B 37 00 2E 00 CD CD
{56} normal block at 0x00372760, 8 bytes long.
Data: < F > A8 F2 46 00 01 00 00 00
{53} normal block at 0x00372838, 512 bytes long.
Data: < > 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00
{48} normal block at 0x003710D0, 24 bytes long.
Data: <T F > 54 F2 46 00 01 00 00 00 00 00 00 00 00 00 00 00
#include <crtdbg.h>
#include "iostream " //
using namespace std; //#include <iostream.h>
void main()
{
_CrtDumpMemoryLeaks();
}
//Debug Info:
Detected memory leaks!
Dumping objects ->
{46} normal block at 0x00371068, 33 bytes long.
Data: < C > 00 43 00 CD CD CD CD CD CD CD CD CD CD CD CD CD
{45} normal block at 0x00371000, 40 bytes long.
Data: < C > EC 11 43 00 16 00 00 00 00 00 00 00 00 00 00 00
Object dump complete.
而且如果main函数中进行了内存的操作,内存泄漏更多。如下:
void main()
{
int n = 10;
int num;
cin> > num;
int *p = new int[sizeof(int)*num];
int *q = p;
p = &n;
delete q;
q = NULL;
_CrtDumpMemoryLeaks();
}
//Debug Info:
Detected memory leaks!
Dumping objects ->
{69} normal block at 0x00372BE0, 5 bytes long.
Data: <true > 74 72 75 65 00
{68} normal block at 0x00372B98, 6 bytes long.
Data: <false > 66 61 6C 73 65 00
{67} normal block at 0x00372B50, 1 bytes long.
Data: < > 00
{62} normal block at 0x003727A8, 24 bytes long.
Data: < F P+7 . > F8 F2 46 00 01 00 00 00 50 2B 37 00 2E 00 CD CD
{56} normal block at 0x00372760, 8 bytes long.
Data: < F > A8 F2 46 00 01 00 00 00
{53} normal block at 0x00372838, 512 bytes long.
Data: < > 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00
{48} normal block at 0x003710D0, 24 bytes long.
Data: <T F > 54 F2 46 00 01 00 00 00 00 00 00 00 00 00 00 00