百思不解的问题,高分求救!!!

ldcr 2005-06-03 12:35:41
我写的以下程序
BOOL DataStore(unsigned char *buf, long size)
{
pbuf=(unsigned char *)malloc(size);
//for(long i=0;i<size;i++)pbuf[i]=buf[i];
memcpy(pbuf,buf,size);
return TRUE;
}
BOOL BrightAjust(unsigned char *buf, long size, int vB)
{

if(pbuf==NULL)DataStore(buf,size);
for(long i=0;i<size;i++)
{
if(buf[i]+vB>255)buf[i]=255;
else if(buf[i]+vB<0)buf[i]=0;
}
return TRUE;
}
运行时弹出错误,Error: expression cannot be evaluated

why???????????????????????????
...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2005-06-03
  • 打赏
  • 举报
回复
BOOL BrightAjust(unsigned char *buf, long size, int vB)

if(pbuf==NULL)DataStore(buf,size);//这里有问题?
buf。。没分配?
ldcr 2005-06-03
  • 打赏
  • 举报
回复
pbuf是全局变量
并且初始pbuf=NULL;
ldcr 2005-06-03
  • 打赏
  • 举报
回复
据qfeng_zhao(一天到晚游泳的鱼),看来这段程序是没问题。是其它的问题吧
原程序是:
BOOL ImagePro::DataStore(unsigned char *buf, long size)
{
pbuf=(unsigned char *)malloc(size);
memcpy(pbuf,buf,size);
return TRUE;
}
BOOL ImagePro::BrightAjust(unsigned char *buf, long size, int vB)
{

if(pbuf==NULL)DataStore(buf,size);
for(long i=0;i<size;i++)
{
if(buf[i]+vB>255)buf[i]=255;
else if(buf[i]+vB<0)buf[i]=0;
}
return TRUE;
}
void Adjust::OnCustomdrawBright(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
int ii=m_Bright.GetPos();
if(m_hsi.i!=ii)
{
s.Format("%d",ii);
GetDlgItem(IDC_Br)->SetWindowText(s);
m_hsi.i=ii;
if(apDoc!=NULL)
{
unsigned char * pbuf=(unsigned char *)malloc(size); apDoc->m_pDIB->Data2Buf(pbuf);
datapro->BrightAjust(pbuf,size,ii);
if(apDoc->m_pDIB->Buf2Data(pbuf))//改变原图像
theApp.pView->OnDraw(theApp.pView->GetDC());//更新视图
if(pbuf!=NULL)free(pbuf);
}
}
}
mostideal 2005-06-03
  • 打赏
  • 举报
回复
我没时间试,,帮你顶了。。
ldcr 2005-06-03
  • 打赏
  • 举报
回复
试过了,提示
+ pbuf CXX0030: Error: expression cannot be evaluated unsigned char *
如果这样
BOOL DataStore(unsigned char *buf, long size)
{
pbuf=(unsigned char *)malloc(size);
//for(long i=0;i<size;i++)pbuf[i]=buf[i];
memcpy(pbuf,buf,size);
return TRUE;
}
BOOL BrightAjust(unsigned char *buf, long size, int vB)
{

// 断点2 if(pbuf==NULL)DataStore(buf,size);若屏蔽这一行就可以通过
//换成 if(pbuf==NULL)vB++;都会出错,不解!!!
for(long i=0;i<size;i++)
{
if(buf[i]+vB>255)buf[i]=255;
else if(buf[i]+vB<0)buf[i]=0;
}
return TRUE;
}
qfeng_zhao 2005-06-03
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef int BOOL;
#define TRUE 1;

unsigned char *pbuf;
const int bufferSize = 100;

BOOL DataStore(unsigned char *buf, long size)
{
pbuf=(unsigned char *)malloc(size);
//for(long i=0;i<size;i++)pbuf[i]=buf[i];
memcpy(pbuf,buf,size);
return TRUE;
}
BOOL BrightAjust(unsigned char *buf, long size, int vB)
{

if(pbuf==NULL){
DataStore(buf,size);
}
for(long i=0;i<size;i++)
{
if(buf[i]+vB>255)buf[i]=255;
else if(buf[i]+vB<0)buf[i]=0;
}
return TRUE;
}


int main()
{
unsigned char buf[bufferSize];
int i;

for(i=0; i<bufferSize; i++)
{
buf[i] = i*2;
}

BrightAjust(buf,bufferSize,-10);

for(i=0; i<bufferSize; i++){
printf("%d ", buf[i]);
if((i+1)%10==0){
printf("\n");
}
}

return 0;
}

如果buf在分配的话,没什么问题的,vc6+xp下调试通过
guyaguya 2005-06-03
  • 打赏
  • 举报
回复
BOOL DataStore(unsigned char *buf, long size)
{
// 断点1 pbuf=(unsigned char *)malloc(size);
//for(long i=0;i<size;i++)pbuf[i]=buf[i];
memcpy(pbuf,buf,size);
return TRUE;
}
BOOL BrightAjust(unsigned char *buf, long size, int vB)
{

// 断点2 if(pbuf==NULL)DataStore(buf,size);
for(long i=0;i<size;i++)
{
if(buf[i]+vB>255)buf[i]=255;
else if(buf[i]+vB<0)buf[i]=0;
}
return TRUE;
}

在我标断点的两个地方设两个断点调试一下
ldcr 2005-06-03
  • 打赏
  • 举报
回复
前面是这样的
......
unsigned char * buf;
buf=(unsigned char *)malloc(size);
.....//对buf附值
BrightAjust(buf,size,3);
if(buf!=NULL)free(buf);
......
ldcr 2005-06-03
  • 打赏
  • 举报
回复
是那里有问题,不过把改成if(pbuf==NULL)AfxMessageBox("xx");
同样是这里出错
xiaoran2267 2005-06-03
  • 打赏
  • 举报
回复
buf。。没分配

64,683

社区成员

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

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