是否使用未初始化变量 UB 的地址? [复制]

2023-12-01

这个小码是UB吗?

void Test()
{
  int bar;
  printf("%p", &bar);  
}

IMO 这不是 UB,但我想要一些其他意见。

它只是打印地址bar, 即使bar从未被初始化过。


TL:DR不,您的代码不会通过使用任何东西来调用 UB未初始化的,正如您可能想到的那样。


(ny) 变量的地址(在本例中是自动的)有一个definedvalue,所以无论变量本身是否初始化,变量的地址都是一个定义值。您可以利用该值。 (如果您不处理指针并进行双重取消引用。 :) )

也就是说,严格来说,你应该写

 printf("%p", (void *)&bar);

as %p需要一个指针类型的参数void and printf()作为一个可变函数,没有提升(转换)执行。否则,这是一个明确定义的行为。

C11,第 §7.21.6.1 章

p参数应该是一个指向void。 [......]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否使用未初始化变量 UB 的地址? [复制] 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何使用流畅的 NHibernate 将枚举映射为 int 值?

    问题确实说明了一切 默认情况下它映射为string但我需要它映射为int 我目前正在使用PersistenceModel如果这有什么区别的话 我可以设定我的惯例 Update发现从主干获取最新版本的代码解决了我的困境 定义这个约定的方式以前
  • 如何从自定义视图(NSView)中制作缩略图视图?

    如何制作缩略图视图 不是图像 形成自定义视图 NSView 如果自定义 NSView 的内容发生更改 缩略图视图也会发生更改 看起来像ibook作者 谢谢大家 https plus google com u 0 photos 1147559
  • 用于生成唯一 ID 的 iOS 硬件参数

    您好 我想使用任何设备硬件参数为 iOS 设备生成一个唯一的 ID 我不想使用 MAC 地址 因为 MAC 地址也有可能被更改 那么您能否告诉我是否有任何其他唯一的硬件参数可以用来生成唯一的 ID 我相信类似的事情this是普遍接受的 UU
  • 无法对已卸载的组件执行 React 状态更新。这是一个无操作

    这是控制台中的警告 警告 无法对已卸载的组件执行 React 状态更新 这是一个空操作 但它表明应用程序中存在内存泄漏 要修复此问题 请取消 useEffect 清理函数中的所有订阅和异步任务 这是我的代码 const index setI
  • 将大型 XML 文件拆分为 Hadoop 的可管理部分

    是否有一个输入类可以根据 Hadoop 中的树结构处理 多个 大型 XML 文件 我有一组具有相同架构的 XML 文件 但我需要将它们拆分为数据部分 而不是分解这些部分 例如 XML 文件为
  • NHibernate 和数据库连接故障转移?

    我正在使用 NHibernate 连接到旧的 RDBMS 系统 在高生产负载下 rdbms 服务失败 为了保持可用性 我们提供了故障转移 RDBMS 服务 有没有办法将 NHibernate 配置为在主连接关闭时使用故障转移连接字符串 附加
  • 如何在 C 中通过 execv() 执行进程时杀死进程及其所有子进程?

    我正在尝试实施一个timeout类似命令unix基于操作系统如下 int pid timer t timer id struct sigevent timer event struct itimerspec timer value void
  • 所有 Android 设备中的蓝牙 RSSI 值始终以 dBm 为单位?

    我是 Android 新手 我的应用程序使用蓝牙从小型称重传感器放大器接收数据 虽然在某些设备 三星设备 中 BT 信号强度 RSSI 会按预期变化 从短距离处的 20 左右到 10m 处的 80 左右 但在其他一些设备 至少是一款 LG
  • 无法使用 cpan 在 darwin 13.0.1 上安装 GD 模块

    我在尝试安装 GD 时遇到了困难 我正在运行 Mas OSX 10 9 2 darwin 13 0 1 当我运行这个时 cpan 1 gt 安装 GD perl MCPAN e shell 我收到以下错误 cpan 1 gt install
  • 使用 MinGW 和 libnoise 库的 Netbeans C++

    使用 netbeans 7 2 和最新版本的 MinGW 使用安装程序 我无法使用 libnoise 库 我正确地包含了头文件 自动完成确认了这一点 但是该库根本无法工作 有一个 lib 文件和一个 dll 我尝试了在项目 gt 属性 gt
  • 替换 xml 属性的正则表达式

    我有一个以下形式的 xml 文件
  • 有 MSBuild 替代方案吗?

    我是一名正在接受培训的学生 对 C 的经验很少 我们公司正在开发一个使用T4模板 C VS2010 的解决方案 生成的文件无法在 MSBuild 下编译 因为它依赖于 VS 我的任务是找到一个工具或库或 dll 文件或SDK 或任何可以在构
  • 在Qt5中绘制大量独立角色的最佳方法?

    我正在编写一个显示大量文本的应用程序 但它不是单词和句子 而是以 CP437 字符集显示的二进制数据 目前的形式 但我在绘制这些角色时遇到了问题 我需要一一绘制每个角色 因为稍后我想应用不同的颜色 这些字符也应该有透明的背景 因为稍后我想在
  • Chart Js可点击栏

    我想让我的图表 js 栏可点击 我想添加点击功能 例如链接 不知道如何继续 已阅读文档 10 次
  • 铁路路线 /new(.:format)

    假设我有一个wordsController 我明白 GET words format words index 该路线在路线末尾有一个 format 以便我可以选择不同的响应格式 GET words new format words new
  • 寻找具有特定内部颜色的单元格

    我使用此代码来查找特定颜色的单元格 通过条件格式更改 然后根据该行中的值交换到另一张工作表 然而 宏运行并没有找到任何东西 没有错误消息 它只是没有找到任何单元格 在这个测试中我已切换到 RGB 255 0 0 我在这里做错了什么 Sub
  • 在 ColdFusion MX7 中将 JSON 字符串转换为数组

    我有一个 cookie 值 例如 index 1 name TimePeriod hidden false index 2 name Enquiries hidden false index 3 name Online hidden fal
  • 这段VB代码是如何自动添加的?

    几天后 每当我在 Notepad 中打开 JavaScript js 或 HTML html 文件时 都会在末尾自动添加类似的 VB 脚本 我强烈地感觉到这是某种病毒 有人可以指导我吗 My file ends here
  • Steam API 使用 Javascript 获取 SteamID

    遇到了似乎是同源策略的问题 这引起了相当大的头痛 切入主题 我本质上是在仅提供用户名时尝试获取用户的 steam64id 例如 我的用户名 Emperor Jordan 我会转到 http steamcommunity com id emp
  • 是否使用未初始化变量 UB 的地址? [复制]

    这个问题在这里已经有答案了 这个小码是UB吗 void Test int bar printf p bar IMO 这不是 UB 但我想要一些其他意见 它只是打印地址bar 即使bar从未被初始化过 TL DR不 您的代码不会通过使用任何东