首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >怎么可能在一个平台上发生缓冲区溢出,而在另一个平台上却没有呢?

怎么可能在一个平台上发生缓冲区溢出,而在另一个平台上却没有呢?
EN

Stack Overflow用户
提问于 2011-02-22 23:53:59
回答 5查看 368关注 0票数 2

由于情况的模糊性,我在问这个问题时犹豫不决,但我想知道这是如何实现的。我有一个用Visual Studio2008开发的C++应用程序。当我在Windows7 64位(或Vista 32位)上编译应用程序时,应用程序运行良好。在32位Windows XP SP3上编译应用程序时,收到缓冲区溢出警告,进程终止。它使用的是Visual Studio2008 C++编译器的相同版本。为什么我在XP上会收到缓冲区溢出,但在其他Windows平台上却没有?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-23 00:04:25

编写代码,这样就不会出现缓冲区溢出,并且在任何平台上都不会出现这种问题。也就是说,确保检查正在访问的缓冲区的边界,以确保您没有试图在适当的边界之外进行读/写。

票数 4
EN

Stack Overflow用户

发布于 2011-02-22 23:59:41

幸运,宇宙的根本不确定性,或者(比以前更可能的)在XP和7之间在msvcrt.dll中发生变化的实现细节。

底线是你的应用程序中有一个bug,你应该修复它。

票数 4
EN

Stack Overflow用户

发布于 2011-02-22 23:59:25

在这两种情况下,您可能都有缓冲区溢出,在第一种情况下,它不会被检测到,并且(显然)不会造成任何损害。在第二种情况下,它被检测到。(如果它在动态分配的内存上,您必须知道分配器分配的内存通常比请求的多,因此一个合理的解释是,在第一种情况下,溢出停留在该区域,在第二种情况下则不是)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5080456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档