几个小知识点

前两天看见一句话:不要轻易的下决定,也不要轻易的改变已作的决定,深有同感。

今天从VC中内存分配引申出几个小问题。
1. 在vc7/crt/src/new.h文件中,有如下语句:
inline void *__cdecl operator new(size_t, void *_P)
        {return (_P); }
显然这就是通常所说的placement new了,确实该operator new函数只是简单的返回_P。operator new的第一个参数是sizeof()取得的值,编译器自动加上。

2. 在vc7/crt/src/dbgheap.c中,我们可以看到_CrtDumpMemoryLeak函数负责将所有的内存泄露Dump到Output窗口,当我们双击Output窗口时,代码窗口会自动跳转到内存分配的地方,这是如何做到的呢?实际上这是很简单的,只要OutputDebugString即可,并且输出的string开头应该这样格式"__FILE__(__LINE__)"。

3. vc中数据在内存中是按高位到低位的顺序存放的。比如
int a = 0x12345678;
char* pa = (char*)&a;
我们可以注意到:*pa = 0x78, *(pa+1) = 0x56, *(pa+2) = 0x34, *(pa+3) = 0x12。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值