关于NEW内存分配问题~!!请近来帮忙看看~!!

ll740 2007-04-06 01:16:17
int main()
{
char *pNew = new char[100];
}

这个简单的程序为什么无法分配内存啊?

我在2太电脑试过都这样?是怎么一回事啊?
...全文
348 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
spookxiu 2007-04-06
这句E文的意思是无法计算表达式的值,在当前语句即Buffer = new char[size];运行结束之前当然会出这句提示。你继续运行就是了,不是错误。
回复
ll740 2007-04-06
“CXX0030: Error: expression cannot be evaluated”

buffer 0xcccccccc 前面有个+号, 点开下面的一条就是这个
回复
heezhen 2007-04-06
buffer 0xcccccccc ""
===========================
0xcccccccc是没有赋初值的野指针的值,看你上面的代码已经赋初值了,不过再没赋初值之前你用vc的智能感知也会得到0xcccccccc,这个没关系的。

不过这句话“CXX0030: Error: expression cannot be evaluated”你是在什么地方看到的?运行期的输出窗口??


buffer 0x003707b8 "妄
瓠?瓠韩

-51 '?
===========================
这里面你看到的是刚new出来还没有使用过的内存,也就是raw memory,你可以用vc的内存查看器看一下。智能感知把内存中存储的信息按字符串打印出来,就有可能是乱码了。

回复
spookxiu 2007-04-06
晕 应该跟VC没关系吧
你用memset或者ZeroMemory把那数组清一下
回复
ll740 2007-04-06
汗```我都在重装VC了 还不行的话....我就...
回复
spookxiu 2007-04-06
我用2003调下面这个没有问题
int main()
{
long size = 13240;
char *Buffer = NULL;
Buffer = new char[size];

if(!Buffer)
printf("Error");
}
回复
ll740 2007-04-06
取到了 13240
回复
spookxiu 2007-04-06
你那个size取到值了吗?
回复
yutaooo 2007-04-06
那个try块里面抛出exception了吗?
回复
ll740 2007-04-06
一步步调试  就是  分配内存有问题  晕菜
回复
ll740 2007-04-06
以上是我截取位图的类程序
回复
ll740 2007-04-06
HRESULT CDVGraph::GetBitmapBits(double StreamTime, long *pBufferSize, char *pBuffer, long Width, long Height)
{
HRESULT hr;
long size;
hr = m_pIMediaDet->GetBitmapBits(0, &size, 0, Width, Height);
if (SUCCEEDED(hr)) //可以截取.
{
char *Buffer = NULL;
Buffer = new char[size];//理解,分配这么长的缓冲区.Buffer为其指针.------------>无法赋值!!
if (!Buffer)
return E_OUTOFMEMORY;
try //我认为这一步的意思是指BUFFER是否正确地指向缓冲区.
{
hr = m_pIMediaDet->GetBitmapBits(0, &size, Buffer, Width, Height);//存入此指针所指向的缓冲区.
}
catch (...) {
delete [] Buffer;
throw;
}
if (SUCCEEDED(hr))
{
BITMAPINFOHEADER *bmih = (BITMAPINFOHEADER*)Buffer;
HDC hdcDest = GetDC(0);

// Find the address of the start of the image data.
void *pData = Buffer + sizeof(BITMAPINFOHEADER);

// Note: In general a BITMAPINFOHEADER can include extra color
// information at the end, so calculating the offset to the image
// data is not generally correct. However, the IMediaDet interface
// always returns an RGB-24 image with no extra color information.

BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(BITMAPINFO));
CopyMemory(&(bmi.bmiHeader), bmih, sizeof(BITMAPINFOHEADER));
HBITMAP hBitmap = CreateDIBitmap(hdcDest, bmih, CBM_INIT,
pData, &bmi, DIB_RGB_COLORS);
pData = pBuffer;
}
delete[] Buffer;
}
return hr;
}
回复
spookxiu 2007-04-06
你的程序就只有这些?全发上来看下
回复
ll740 2007-04-06
汗```急啊``


编译没错误自然.

但一步步 调试..

却有

- buffer 0xcccccccc ""

CXX0030: Error: expression cannot be evaluated


再调
- buffer 0x003707b8 "妄
瓠?瓠韩

-51 '?


什么怪东西全出来了!!!!我要怎么弄啊


回复
yutaooo 2007-04-06
木有出现,我用的是vs2005
回复
ll740 2007-04-06
CXX0030: Error: expression cannot be evaluated

请问有这个玩意出现吗 我是VC6
回复
yutaooo 2007-04-06
应该可以副直的吧。应该是可以隐式转换的。不理解。我这里可以编译的嘛。
vs2005
回复
FingerStyle 2007-04-06
没错误啊
回复
ll740 2007-04-06
to yutaooo():

这个要怎么做? 我比较菜,不知道要怎么做.
回复
ll740 2007-04-06
CXX0030: Error: expression cannot be evaluated
错误没有,只是调试到char *pNew 时 是以上的 信息. 这样 是不能赋值吧
回复
加载更多回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2007-04-06 01:16
社区公告
暂无公告