我想使用一个幻数作为常量来检查是否违反了内存块,是否有一种"反向检查"方法将签名恢复为十六进制格式MAGIC_32BIT

#define MAGIC_32BIT 0x77A5844CU

int signature = (int)MAGIC_32BIT;

另外,我想使用更具创造力的魔术数字,关于生成数字或遵循规则的任何想法? 没有冒犯,但我听说过Microsoft的0xB16B00B5,并希望我的语言对人类更具"可读性"。

0xBADF00D? 虽然不是我的发明,但苹果已经将其用于崩溃日志,但是它很容易被人读懂。

只要有创造力。 查看看起来映射到字母字母的十六进制数字(如果您足够睁开眼睛,几乎全部都用十六进制数字表示)并制作一些单词。 实验。

以下是列表:http://en.wikipedia.org/wiki/Hexspeak#Notable_magic_numbers

我知道此回复可能无法回答您的问题,但我仍然希望它能有所帮助。

您的"魔数"实际上应该取决于您的应用程序以及要检测或期望的内存损坏类型。

我已经看到过使用0xEE初始化任务整个堆栈的操作系统,该值既易于识别,也不可能被大多数人使用。该方法可用于通过计数0xEE字节来估算未使用的堆栈空间量。完美吗?但它很快((相当)便宜且容易实现)。这样做的好处之一是,您有时可以轻松地识别出哪些字节已损坏(例如,如果在0xEE字节中有几个非0xEE字节)。基本思想应该可以转移到其他领域。

您可以采用自定义路线,并且每个数据结构都有一个唯一的幻数-例如CRC。它更昂贵,但是在检测数据结构是否已损坏时会更好。它不会告诉您损坏的位置/方式/时间,而仅告诉您是否损坏。不幸的是,这将使您的可读请求失败。

如果您的内存块足够大,则可以通过默认情况下禁用对它们的写入,并仅在需要进行更改的时间内启用它们,来利用MMU并保护您的内存块。此方法可能会有一些写入性能的损失,但是它可以帮助检测损坏的时间,地点和人员。这完全消除了幻数。

希望这可以帮助。

是的,我找到了答案,直接检查了宏,ceffault的Wiki评论显示int变量可以互换,而无需使用强制转换。

#define MAGIC_NUM 0x8BADF00D

#define CHECK_SIG(A) (A == MAGIC_NUM)

嗯,听起来您将在不了解C的基本知识的情况下做一些低级的内存工作。也许您应该首先学习有关类型系统和提升规则的所有知识。 C给您所有自由去做您想做的事,但是您应该始终知道自己在做什么。

c语言幻数游戏,C中的幻数相关推荐

  1. 游戏开发- Python语言在游戏开发中的潜力

    PYTHON 是一种面向对象的通用高级编程语言,由 GUIDO VAN ROSSUM 于 1991 年开发.自发展以来,PYTHON 已成为世界上最流行的编程语言之一.它经常在流行度调查中排名靠前-- ...

  2. 幻数java题_关于数组中的幻数?:数组中的幻数? -C ++

    我是一个相当新的程序员,如果无法轻松获得此信息,我感到抱歉,我只是无法找到它. 这是我的问题: 当您使用文字数字访问数组的特定元素时,是否被视为幻数? 例如: arrayOfNumbers[6] // ...

  3. 幻数java题_java – 公式中的幻数

    这是一个完善的惯例,应避免使用魔法数字.但复杂的条件公式中的幻数呢?例如: int result = 0; if (level <= 50) { result = (int) (Math.pow ...

  4. 如何在C语言游戏代码中加入音乐?

    很多小伙伴在用C语言写游戏时,不知道怎么加音乐,今天一步到位分享给大家! 使用 mciSendString 播放音乐 mciSendString 支持 mp3.wma.wav.mid 等多种媒体格式, ...

  5. [GZip 头中的幻数不正确。请确保正在传入 GZip 流]的出错原因之一

    之前的几个版本使用和调试都正常,也同样的使用了fiddler2来进行跟踪,突然有一天早上进行改版,发现了 GZip 头中的幻数不正确.请确保正在传入 GZip 流 这个让人发疯的问题,经过使用fidd ...

  6. resize2fs: 超级块中的幻数有错(Bad magic number in super-block )

    resize2fs: 超级块中的幻数有错(Bad magic number in super-block ) 问题: lvm创建的逻辑卷,在使用lvextend扩容之后,df看并不会有变化,通常我们需 ...

  7. 【转】游戏编程中的人工智能技术--神经网络

    原文:http://blog.csdn.net/ecitnet/article/details/1799444 游戏编程中的人工智能技术 . > .  (连载之一) 用平常语言介绍神经网络(Ne ...

  8. 拼图游戏C语言课设实验报告,C语言拼图游戏实验报告.doc

    C语言拼图游戏实验报告 课程设计实验报告 班级:光电104-2 姓名:刘云龙 学号:201058501220 一.实验题目:使用C语言编写一个小游戏(拼图游戏) 二.实验目的:C语言是每一个通信学生的 ...

  9. 游戏开发中的数据表示

    声明:本文内容源自腾讯游戏学院程序公开课_服务端 一.数据表示的基础 什么是数据表示? 数据是信息的载体. 数据表示是一组操作,可以描述.显示.操作信息. 数据表示的要素 IDL - 接口描述语言 I ...

最新文章

  1. C++中拼接一个包含整型等类型字符串的方法
  2. MySQL内核月报 2015.01-MySQL · 捉虫动态· InnoDB自增列重复值问题
  3. 1128 N Queens Puzzle (20 分)【难度: 一般 / 知识点: 模拟】
  4. linux配置临时IP和永久IP
  5. 《Adobe Dreamweaver CC经典教程》——导读
  6. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
  7. JDK 8 新特性 之 default关键字
  8. 仿iphone触屏手机界面
  9. server安装 sql 发生mof语法错误_WIN7系统无法安装server2008R2,提示语法MOF错误
  10. 电大计算机应用基础考试复习,电大 《计算机应用基础》形考作业2
  11. Android学习总结(1)——好的 Android 开发习惯
  12. Vista工具箱 v3.1
  13. C语言求超级素数的个数,求一个输出a-b的超级素数程序(c)
  14. 【unity】Inspector视图中的get/set使用(四)
  15. A2 雷达多点触控
  16. 腾讯等公司python工程师面试题曝光!涨知识了
  17. html页面百度分享代码,使用百度分享api实现网页分享功能代码
  18. Nginx报错 nginx: [error] invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“
  19. 如何利用石墨文档进行团队协作
  20. 蓝桥杯实验4--按键之独立键盘(proteus仿真)

热门文章

  1. 为何在网络上很难赚到钱?网络副业赚钱真的很难做吗?
  2. SEO优化技巧:如何提升流量,提高网站点击率
  3. 开启多媒体台式计算机过程,东师多媒体计算机技术19秋在线作业2题目【标准答案】...
  4. win10蓝屏自动修复解决方案
  5. C语言——深度剖析数据在内存中的存储
  6. 2021华数杯数学建模选题建议
  7. python:计划持有基金n年,求n年的每年复利_利率
  8. 如何使用Node.js来制作电子音乐-和弦
  9. Honeywell EPKS通用中文操作手册
  10. 一行代码获取股票、基金数据,并绘制K线图