在编程过程中,我们经常需要和内存打交道,其中最重要的当属野指针问题.这个在很多书里面都有介绍,这里重点是讨论各种方式的优缺点.
1. char p[1024][100];//这里分配1024 * 100字节.这种分配方式主要的缺点是:内存无法做到实时释放.而且在分配的时候有大小限制.
2. BYTE* lpBuffer = new BYTE[ 10 * 1024*1024];
char* p = (char *)lpBuffer;
for( int i = 0;i < 1024 * 1024;++ i )
{
p[i] = 'c';
}
delete []lpBuffer;
lpBuffer = NULL;
这种分配方式对于内存的大小并没有限制,但是new后内存一直都在,除非delete.
3. LPVOID lpAddr = VirtualAlloc( NULL,40*1024*1024,
MEM_RESERVE|MEM_COMMIT,PAGE_READWRITE );
char* p = (char *)lpAddr;
for( int i = 0;i < 1024 * 1024;++ i )
{
p[i] = 'c';
}
VirtualFree( lpAddr,0,MEM_RELEASE );
这种分配方式对于内存的大小也没有限制.,并具备用时分配的特点.而且在长时间不用时系统可以把内存的内容调整到磁盘.
上述代码在调试的时候可以结合进程查看器来查看进程所占内存.