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

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

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

我在2太电脑试过都这样?是怎么一回事啊?
...全文
374 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 时 是以上的 信息. 这样 是不能赋值吧
加载更多回复(2)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧