首页
社区
课程
招聘
[求助]请问下VC2010中怎么获得new申请的元素个数?
发表于: 2013-7-15 16:21 4364

[求助]请问下VC2010中怎么获得new申请的元素个数?

bxc 活跃值
6
2013-7-15 16:21
4364
比如BYTE *pb = new BYTE[123];
怎么再取得123这个值?
我试过sizeof(pb)/sizeof(BYTE)了
也试过int size=*(pb-4);这种办法了
都不行了,VC2010把数组个数藏起来了么?

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 112
活跃值: (57)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
2
在c++中new出来的是数组,无法再得到new出来的元素size, 和使用的编译器, IDE无关
new出来的size 需要自己存起来.

e.g.

#include "stdafx.h"
#include <Windows.h>
#include <tchar.h>

typedef struct _tag_For_New
{
    char *  pcBuf;
    size_t  nSizeBuf;
}TAG_FOR_NEW, *PTAG_FOR_NEW;

int main()
{
    size_t      nArray  =   0x100;  ///< 变量,数组要开辟的数组大小
    TAG_FOR_NEW s1;

    s1.pcBuf = new char[nArray];
    if (NULL != s1.pcBuf)
        s1.nSizeBuf = nArray;

    /// use s1 to do something

    getwchar();
    return S_OK;
}
2013-7-15 16:43
0
雪    币: 402
活跃值: (342)
能力值: ( LV2,RANK:140 )
在线值:
发帖
回帖
粉丝
3
用_msize可以,但是不推荐使用
2013-7-15 23:00
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
new出来的在堆空间 等同于你malloc出来的 除了你自己保存大小 没办法获取大小
2013-7-16 06:35
0
雪    币: 7068
活跃值: (3517)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
5
百度了一下,这个函数不太准确
2013-7-16 10:36
0
游客
登录 | 注册 方可回帖
返回
//