| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:到函数调用的时候为什么提示0x0040b797引用的0x00133000内存不能为read
只看楼主 加入收藏
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
 问题点数:0 回复次数:8 
到函数调用的时候为什么提示0x0040b797引用的0x00133000内存不能为read
#include<stdio.h>
void add(unsigned int *p);
main()
{
    unsigned int a[2]={17,12},;
    add(p);
}
void add(unsigned int *p)
{
    unsigned int c=0;
    char d,i,sum;
    for(i=0;i<250;i++)
    {
        while(p<(p+3))
        {
            c=*p+c;
            if(c<(*p))
            c=c+1;//加上最高位进位
            p=p+1;
        }
    }
    d=0x00ff&c;//d 为低八位
    c=c>>8;
    sum=c+d;
    if(sum<c||sum<d)
        sum+=1;
 
    printf("sum=%d",sum);
}
搜索更多相关主题的帖子: 函数 内存 
2011-06-06 09:56
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
你char sum的
2011-06-06 09:59
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:0 
回复 2楼 c564794923
什么意思
2011-06-06 10:17
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
你输出是%d 你定义sum是字符 类型不符合
2011-06-06 10:20
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
你main中的p定义的是啥?
2011-06-06 10:48
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
1. 这代码不可能编译,main 里的 p 未定义。
2. while(p<(p+3) 这个明显有问题。p < (p + 3))一直为真,直到 p 的值超过 unsigned int 的范围。出现内存访问错误的原因就在这里

[ 本帖最后由 voidx 于 2011-6-6 13:34 编辑 ]
2011-06-06 11:00
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:0 
回复 6楼 voidx
谢谢,问题就是这里,刚才找到了
#include<stdio.h>

void add(unsigned int *p);


main()
{
    unsigned int a[3]={17,12};
    add(a);
}
void add(unsigned int *p)
{
    unsigned int *q;   
    unsigned int d,sum,c=0;
    char i;
    q=p;
    for(i=0;i<250;i++)
    {
        while(p<(q+3))
        {
            c=*p+c;
            if(c<(*p))
            c=c+1;//加上最高位进位
            p=p+1;
        }
    }
    d=0x00ff&c;//d 为低八位
    c=c>>8;
    sum=c+d;
    if(sum<c||sum<d)
        sum+=1;
 
    printf("sum=%d",sum);


}可是修改过后出来黑色提示框什么也没有,不知道是什么情况
2011-06-06 13:42
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
char i;
for(i=0;i<250;i++) {    // 这个会死循环滴~ 楼主去看一下 char 的取值范围。而且,你这个循环完全没有用的,因为内层循环只会执行一次。
                        // 如果你希望内层循环不断重复执行,记得个复位 p,即 p = q 。
                        // 关于 i 的问题,你可以改成 unsigned char i;
   ...
}
2011-06-06 13:51
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
得分:0 
回复 8楼 voidx
谢谢!!
2011-06-06 14:04
快速回复:到函数调用的时候为什么提示0x0040b797引用的0x00133000内存不能为rea ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027081 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved