有个关于C语言的问题想问,出现了图片中的问题想问是什么原因?
主要是在大循环下比如for(m=1;m<maxmark;m++){buffer_1=(unsignedchar*)malloc(bmiHdr.biHeight*bmiHd...
主要是在大循环下比如for (m=1;m<maxmark;m++){ buffer_1=(unsigned char * )malloc(bmiHdr.biHeight*bmiHdr.biWidth);
buffer_2=(unsigned char * )malloc(object[centernum].length*object[centernum].height);
.......free(buffer_!);free(buffer_2);}作用是每一次buffer_2都开辟新空间储存buffer_1对应的点,这样写有什么问题么?为什么每次都出现图片上的问题?非常感谢~~ 展开
buffer_2=(unsigned char * )malloc(object[centernum].length*object[centernum].height);
.......free(buffer_!);free(buffer_2);}作用是每一次buffer_2都开辟新空间储存buffer_1对应的点,这样写有什么问题么?为什么每次都出现图片上的问题?非常感谢~~ 展开
3个回答
展开全部
暂时看不出具体问题点。我怀疑是你分配的空间太大了,或者其他原因导致分配失败。
你调试一下,看看maxmark大概有多少,还有就是要确认
object[centernum].length*object[centernum].height 这样的使用,数组object没有越界。
有问题再问我
你调试一下,看看maxmark大概有多少,还有就是要确认
object[centernum].length*object[centernum].height 这样的使用,数组object没有越界。
有问题再问我
追问
如果越界了要怎样解决?
追答
目前不能确认你的是否有越界。
我给你举个关于越界的简单例子吧,比如
#define MAX_NUM 20
int a[MAX_NUM]; 这表示数组a只有20个元素,他们分别是a[0], a[1]....a[19]
0~19刚好是20个。那么在使用数组a的时候,就不能出现 a[20] 这样的使用,只要> 19就已经越界了
只有定义的时候才知道具体是多少个元素,使用者是不知道的;
如果真的出现了越界,就没法解决了。
所以,我们只能保证在使用的时候不要越界。比如可以增加适当的判断
if(x < MAX_NUM)
{
....
a[x] .....
}
else
{
//越界的处理
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询