您现在的位置:主页 > kj58金凤凰开奖结果香港马 >

C语言中类型强制转换引起段错误问题!!!紧急求救

发布日期:2019-10-17 11:46   来源:未知   阅读:

  这个和int--char类型之间的强制转换有什么不一样吗?同样是不同长度的两个类型之间的强制转化,请高手们解惑~~~

  [软件发布]Keyboarder键盘辅助软件 V0.1 Build 070729

  散分100:首次在华军软件园发布原创软件【Keyboarder键盘辅助软件】!

  类型转换当然要读取,但不会越界读取。你的那段程序不正确是因为越界读取。

  VC6.0+ATL3.0 ? VC2005+ATL8? 你们都在用哪个?

  楼主是什么环境,我在VS2005下面编译通过,并且运行正确,分析一下你的代码也并没有发现什么错误.楼主只是强制把一段内存分配给s,s里的256个字符刚好等于&a地址后的连续内存,在VS2005下打开内存可以看到,s赋值以后的内容和&a地址的内容完全一致,结果也打印出10了.所以我的结论:没有错误

  访问&a地址后的连续内存(越界)是可能导致访问违规的,这就是错误所在。

  [软件发布]Keyboarder键盘辅助软件 V0.1 Build 070729

  散分100:首次在华军软件园发布原创软件【Keyboarder键盘辅助软件】!

  访问违规是不是一般情况下都不会出错?这个例子根本不会报错,所以我那个错误也几乎不能重现

  参数传递时进行int*到void*的转换,而void*指向的内容是没有大小的,所以在函数里将void*转换为SS*的时候。s=*(SS*)p仅仅是说明了s现在指向的内容大小为sizeof(SS),如果该内存范围属于你自己的程序空间,访问时不会出现错误,只是(s+sizeof(int)后面的内容)是不确定的;否则如果内存范围超出你自己的程序空间,就会出现访问违规的情况。管家婆高手论坛中特九龙图库彩图大全