`

程序中变量自动改变的问题

阅读更多

原文及更多内容:http://yysource.sourceforge.net/?p=99

程序中的变量,有时会被莫名奇妙地改变。之前明明是111,在某个函数过后可能就变成31348了。

很可能是因为程序中的其他变量(比如字符串)写入超出范围了,但是由于超出的部分刚好是本程序的其他变量所在的内存空间,

所以系统不会报错。但是你其他的变量就这样不幸地“被改变”了。


比如,在读取文件内容的时候,往往需要循环读取,直到不能再读

……定义变量……

char contents[255];

int i = 0;

……各种无关函数纷纷路过……

while (ReadFile(hFile, contents + strlen(contents)255, NULL, NULL))) {}

假设读了第一次后, strlen(contents) == 200 ,还可以再读。那么这次真的读到了 255 个字节,

而此时 contents 只剩下 55 字节可以装了……于是,多出来的部分全部硬塞到 i,以及i后面的变量中去了。

0
1
分享到:
评论

相关推荐

    TIA博途软件中如何设置在程序中自动显示变量的注释信息?.docx

    总结一下,要在TIA博途V15中自动显示变量的注释信息,首先要为变量添加注释,然后可以通过工具栏的“显示变量信息”图标或在“设置”中调整“变量信息”的显示状态。这两种方法都能帮助程序员在编程过程中更方便地...

    JDK环境变量自动设置

    至于压缩包中的文件,`.exe` 文件(AtCfgEnv.exe)很可能是该环境变量设置工具的可执行程序,而`.vsf` 文件可能是一种视觉样式文件,可能用于改变工具的外观或者界面主题。不过,具体功能需运行程序后才能明确。 总...

    数控宏程序变量赋值试题[参照].pdf

    数控宏程序变量赋值是数控编程中的一个重要概念,它涉及到一系列高级编程技巧,用于实现复杂的自动化加工任务。在数控系统中,宏程序允许用户通过变量来动态改变程序的行为,提高程序的灵活性和重用性。 1. 变量...

    西门子如何通过C或VB脚本在WinCC V11中改变趋势变量.pdf

    而VB脚本是基于Visual Basic语言开发的脚本版本,它通常被用于在Windows系统中实现简单的程序自动化。 在WinCC V11中使用C或VB脚本改变趋势变量通常是在运行阶段进行的。运行阶段指的是系统已经启动,用户正在进行...

    S7-200SMART PLC中使用临时变量TEMP无法实现自锁功能的解决办法.docx

    然而,在实际应用中,有些用户可能会遇到使用TEMP变量无法实现自锁功能的问题。自锁功能是PLC控制中一个基础且重要的功能,通常用于保持某个输出状态直到外部条件改变。以下将详细介绍这个问题的原因以及如何解决。 ...

    S7-200smart编写子程序时为什么有部分变量表出现红色,添加不了?.docx

    通过以上步骤,你应该能够解决子程序变量表出现红色并无法添加的问题。在编程过程中,遵循良好的编程习惯,及时检查和调试代码,可以避免类似问题的发生。如果问题依然存在,考虑联系技术支持或专业工程师寻求帮助。

    inno setup改变环境变量脚本

    Inno Setup是一款强大的Windows安装程序制作工具,它允许开发者自定义安装过程中的各种细节,包括修改系统环境变量。本文将深入探讨如何利用Inno Setup脚本来实现环境变量的自动化管理,即在安装时自动添加环境变量...

    变量编程在数控中的应用

    变量编程允许编程者使用变量代替固定的数字值,这样就可以通过改变变量的数值来控制程序的执行,使得一个程序能够适用于多个不同的操作条件和零件尺寸,极大地提高了程序的通用性和灵活性。 在数控编程中,变量编程...

    CODESYS之保持性变量和常量.doc

    程序员可以根据需求在线更改这些变量的状态或数值,这意味着在程序运行过程中,可以通过赋值语句来动态改变变量的值。例如,你可以在调试阶段通过在线工具修改变量的准备值,以测试不同的程序行为。 接下来是常量。...

    Python程序设计:Python常量和变量.pptx

    在Python程序设计中,了解和掌握常量与变量的概念至关重要,因为它们构成了程序的基本构建块。在本任务中,我们将探讨这些概念以及相关的知识点,包括Python中的数字和运算符、内置函数、字符串、列表、元组、字典和...

    全局变量、局部变量、静态变量即内存管理

    在这五个部分中,全局变量、静态变量、局部变量和堆区中分配的变量都是程序中最常用的变量类型。 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量...

    JavaScript程序设计课件:变量.pptx

    JavaScript是一种广泛应用于...理解并熟练掌握变量的使用是JavaScript编程的基础,它允许我们在程序中灵活地存储和操作数据,实现各种复杂的逻辑。在实际编程中,需要注意合理命名变量,确保代码的清晰性和可维护性。

    TIA博途中添加程序注释的具体方法示例-汇总.docx

    对于存储在数据块(DB)中的变量,同样可以在其注释栏中添加注释,以明确该变量在整个程序中的角色和意义。 其次,为程序段添加注释是另一种常见做法。在OB1(主程序)中,每个程序段都可以有对应的注释。这有助于...

    西门子之如何实现过程变量仅在发生改变的情况下才进行归档?.pdf

    总结来看,为了实现过程变量仅在发生改变时归档,需要在WinCC中通过选择合适的配置选项来实现。这样既保证了数据的关键性,又提高了系统的存储效率。此配置在减少数据冗余、节省存储空间以及提高数据检索效率方面...

    C语言中static变量使用方法

    与之相对,非静态全局变量在整个源程序中都是可见的,这意味着任何源文件中的函数都可以访问它。静态全局变量的这一特性有助于减少命名冲突,避免无意中修改全局状态,从而提高了代码的稳定性和安全性。 #### ...

    TIA博途中临时变量Temp的基本概念解析.docx

    此外,程序块中的常量是在编译时分配的,其值在程序执行过程中不会改变,与Temp变量的动态分配和释放机制截然不同。 在实际应用中,Temp变量常用于存储中间结果,特别是在复杂的计算逻辑或者需要避免重复计算的场景...

    TIA博途中FB和FC块里的IN,Inout,Out的区别以及Static和Temp变量的用法.docx

    4. Static变量:Static变量在FB或FC的执行过程中保留其值,即使在程序执行的多个扫描周期之间也是如此。这意味着即使程序块被调用多次,静态变量的值也不会被重置。它们通常用于存储需要在不同时间保持状态的信息,...

    Oracle 中的变量绑定

    不使用绑定变量,例如在Java程序中直接将变量值拼接到SQL语句中,会导致每次SQL语句的值改变时,Oracle都需要重新解析SQL,这称为硬分析(Hard Parse)。硬分析不仅消耗CPU资源,还会增加数据库的负载,因为每次都...

    如何查看或修改FANUC机器人的系统变量?.docx

    只读变量则由系统自动设置,不允许用户修改,通常包含系统状态信息;而只写变量则只能设置初始值,其实际值由系统内部计算得出。 2. **查看系统变量的步骤**: - 第一步,按下机器人的MENU菜单键,进入主菜单界面...

    VC中的全局变量.doc

    - **使用const**:如果全局变量的值在程序运行过程中不会改变,可以声明为`const`,增强代码的可读性和安全性。 - **命名约定**:为了便于识别,全局变量可以采用特定的前缀或后缀,比如`g_`或`global_`。 总结来...

Global site tag (gtag.js) - Google Analytics