▲▲▲我只有20分,我愿意追加给解决问题的人,关于new的

来源:百度知道 编辑:UC知道 时间:2024/06/09 14:32:33
请问是不是所有使用malloc动态分配的内存,都可以用new来代替?

是的话,请帮忙把下面这句使用new取代malloc:

LPRGNDATA lpRgndata;
int n=100;

lpRgndata = (LPRGNDATA)malloc(sizeof(RGNDATAHEADER)+
n*sizeof(RECT));

请在回答前看清,最好明白什么是RGNDATA和RGNDATAHEADER以及RECT,另外再使用delete把分配的内存收回,也写写。
我不希望出现非常弱智的回答,谢谢啦……

LPRGNDATA = new RGNDATA[sizeof(RGNDATAHEADER) + n*sizeof(RECT)];

我也来试试
因为你最后的类型为LPRGNDATA所以应该这样写
lpRgdata=new LPRGNDATA();
但是他有自己的大小不用sizeof(RGNDATAHEADER)+n*sizeof(RECT)给定
也就是说LPRGNDATA和sizeof(RGNDATAHEADER)+n*sizeof(RECT)的大小是一样的

typedef struct _RGNDATAHEADER
{
DWORD dwSize;
DWORD iType;
DWORD nCount;
DWORD nRgnSize;
RECT rcBound;
} RGNDATAHEADER;
typedef struct _RECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
为什么不做个类,将这两个类型设置为元素,去new这个类呢,看样子你也是要用这个指针的哦。