设为首页 加入收藏

TOP

malloc、realloc和new你明白了么?
2012-12-02 22:33:22 】 浏览:542
Tags:malloc realloc new 明白
//========================================================================
//TITLE:
//    malloc、realloc和new你明白了么?
//AUTHOR:
//    norains
//DATE:
//    Saturday  05-January-2008
//Environment:
//    VS2005 +
 SDK-WINCE5.0-MIPSII   
//    EVC + SDK-WINCE5.0-MIPSII  
//========================================================================
    malloc和realloc是C标准函数,而new是C++(www.cppentry.com)的关键字,三者都能动态分配内存.但其中一些有意思的细节,你注意了么
    
    在开篇之前,我们首先需要明确一个概念,数据存储在内存中是无针对性的,换句话说,内存里面的数据,究竟是解释为字符串还是解释为整数,甚至是一个DWORD值还是一个拥有两个WORD的数值,它都是不知道的.如何解释内存中的数据,只和指向这段内存的指针有关.
    
    我们可以用以下代码验证:
 

int WINAPI WinMain(    HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPTSTR    lpCmdLine,
                    
int       nCmdShow)
{
#define MAX_SIZE_MALLOC            8

    BYTE 
*pBuf = (BYTE *)malloc(MAX_SIZE_MALLOC);
    memset(pBuf 
+ 0,0x17,1);
    memset(pBuf 
+ 1,0x4f,1);
    memset(pBuf 
+ 2,0xBA,1);
    memset(pBuf 
+ 3,0x4E,1);
    memset(pBuf 
+ 4,0x9B,1);
    memset(pBuf 
+ 5,0x52,1);
    memset(pBuf 
+ 6,0x00,1);
    memset(pBuf 
+ 7,0x00,1);

    WCHAR 
*pStr = (WCHAR *) pBuf;
    wprintf(L
"Wide-String : %s ",pStr);


    
int *pInt = (int *)pBuf;
    
for(int i = 0 ; i < MAX_SIZE_MALLOC / sizeof(int); i ++)
    {        
        printf(
"pInt[%d]: %d ",i,pInt[i]);        
    }

    free(pBuf);

    Sleep(
1000);
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇内存泄漏 下一篇CString之GetBuffer、ReleaseBuff..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目