内存溢出,求教
aide吧
全部回复
仅看楼主
level 5
时兮▫ 楼主
我在B2字节块上赋值256,其二进制码100000000,但实际由于只分配给它8个bit位,导致最高位溢出,而B3和B4也因此发生了不可预料的变化,有大佬能告诉我B2块和B3块为何会受影响吗?
2018年04月30日 09点04分 1
level 5
时兮▫ 楼主
改正一下,是B3和B4为何会受影响?
2018年04月30日 10点04分 2
level 13
代码呢
2018年04月30日 11点04分 3
level 13
这不是c语言 应该不会这样。贴代码吧
2018年04月30日 11点04分 4
这是C++ ,楼下贴代码
2018年04月30日 11点04分
level 5
时兮▫ 楼主
2018年04月30日 11点04分 5
level 5
时兮▫ 楼主
变量名乱起的,勿怪
2018年04月30日 11点04分 6
level 13
按道理只会 b3 变化[滑稽] 256只溢出1位
2018年04月30日 11点04分 7
理论是这样,但实际情况不是
2018年04月30日 11点04分
回复 时兮▫ :可能编辑器的问题?你可以试试其它编辑器试看
2018年04月30日 11点04分
level 13
问题很大啊,首先int是32位,char是8位,c[0]=i就有问题
然后指针是这样用的么,*(p-1)相当于p[-1],具体会返回什么鬼知道,不段错误就谢天谢地了,建议改为*(p)-1
其他的+2,
+3
也一样
2018年04月30日 11点04分 8
应该这样:int i= 255;int *ii = &i;char *p = (char*)ii;这样才不会出问题
2018年04月30日 11点04分
你的char数组大小只有一位
2018年04月30日 11点04分
然后根据第一条就可以*(p+1),*(p+2),最大只能+3,+4就会出问题了
2018年04月30日 11点04分
我是有意把32位的整型赋给8位字符串的,目的就是为了看它内存的值的变化,其他的指针也只是为了表示它周围数据的值
2018年04月30日 11点04分
level 5
话说ndk咋安装的啊
2018年05月24日 13点05分 9
1