从 void ** 到 char ** 的转换有多危险

2023-12-21

所以我们知道标准并不强制指针大小相等。 (here https://stackoverflow.com/questions/1241205/are-all-data-pointers-of-the-same-size-in-one-platform and here https://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to-different-types-have-different-siz) (而不是谈论函数指针)

我想知道实际上这怎么会成为一个问题。我们知道void *可以容纳任何东西,所以如果指针大小不同,那将是最大的大小。鉴于此,分配一个void ** to a char **意味着麻烦。

我的问题是假设有多么危险void * and char *有相同的尺寸吗?实际上是否有一种架构不是这样的?

而且,16位dos也不是我想听到的! ;)


void * and char *保证具有相同的尺寸。

void **不保证与以下尺寸相同char **(但很可能在您的实施中他们会这样做)。

(C99,6.2.5p27)“指向 void 的指针应具有与指向字符类型的指针相同的表示和对齐要求 [...] 指向其他类型的指针不需要具有相同的表示或对齐要求。”

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

从 void ** 到 char ** 的转换有多危险 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • 作业完成后 Jenkins 杀死 JBoss 服务器

    我使用 Ant 通过 Jenkins 启动 关闭 JBoss 5 服务器 Ant java spawn 和 fork 设置为 true 因此命令在后台执行 Jenkins 成功启动服务器 等待两分钟 Jenkins 中的 睡眠 命令 然后在
  • 使用比较 Xcode iOS 9 中“其他进程”内存不足

    我的应用程序在内存为 0 5GB 的设备上崩溃 然而 在 Xcode 中分析内存使用情况 它很少超过 140MB 我用仪器检查过泄漏情况 但没有发现明显的泄漏 但是 当我运行我的应用程序时 其他进程 使用的内存总是非常高 这是启动后的静止状
  • 如何在 Xamarin Forms 中创建阴影

    如何使用 Xamarin Forms 在按钮或标签上创建阴影 我目前正在使用 Xamarin Forms 1 3 并尝试在 XAML 中执行此操作 如果可能 有没有人有一个可行的例子可以给我指点 我还没有尝试过这个 但您可以创建同一控件的
  • awk 搜索另一个文件中的字段

    我需要在第二个文件中搜索一个文件中的字段 想知道 awk 是否是正确的解决方案 file 1 one two file 2 something one balh one blah two blah two 所需输出 one somethin
  • 为什么在检查最近的提交后我有一个分离的 HEAD?

    最近 在使用 git 存储库时 我想查看旧提交中的代码 68cce45 所以我做了 git checkout 68cce45 查看更改后 我想返回到存储库的当前版本并继续工作 自从2bcfd11是最近的提交 我做了 git checkout
  • 如何将自动布局与容器转换结合使用?

    如何将自动布局与 UIViewController 容器转换方法一起使用 void transitionFromViewController UIViewController fromViewController toViewControl
  • 将一个数据系列绘制在另一个数据系列下方

    当您在 Matlab 中绘制图形时 最近绘制的数据系列会放置在已有数据之上 例如 figure hold on plot sin linspace 0 pi linewidth 4 color 0 0 1 plot cos linspace
  • Android Firebase 应用程序分发 - 服务凭证文件不存在。请检查服务凭证路径并重试

    我正在尝试从 Crashlytics Beta 迁移到 Firebase App Distribution 中间的 CircleCi CircleCi 中的构建失败并出现以下错误 什么地方出了错 任务 FiverrApp appDistri
  • Odoo 销售点 + 邮箱:如何修改收据

    我需要修改销售点收据 在 Odoo 销售点中 有两个打印收据的模板 XmlReceipt 和 PostTicket 当我使用 Posbox 时 我想我必须修改 XmlReceipt 请问有没有办法继承原来的模板 我找到了有关如何使用 Pos
  • 没有错误:无法在谷歌云存储上查看上传的文件

    使用云函数在云函数上运行 python 代码云函数 python https github com MartinSahlen cloud functions python 我正在云上处理图像 现在我想将该图像保存在google cloud
  • 使用 TStringList 的奇怪 EOutOfMemory 异常

    我有一个系统 它加载一些压缩到 log 文件中的文本文件 然后使用多个线程解析为信息类 每个线程处理不同的文件并将解析的对象添加到列表中 该文件是使用 TStringList 加载的 因为它是我测试过的最快的方法 文本文件的数量是可变的 但
  • 在 Python 中迭代模块

    所以我有一个嵌套文件夹 其中有执行某些操作的模块 注意 它们不是类 只是脚本 我想迭代这些模块 我现在拥有的 from scripts module 1 import train module 1 from scripts module 2
  • CouchDB Views - 列出函数性能影响?

    你们中的许多人都知道 couchdb 视图的响应如下 rows key 1 value Col1 Some Value key 2 value Col1 Another Value 好吧 我想将其整理为 key 1 value Col1 S
  • 如何更改作为参数传递给函数的变量?

    我试图通过使用返回 void 的函数来更改结构内的一些变量 该函数采用 Struct 成员作为参数 结构数组和大小 该函数有一些代码 最终会更改结构成员内的一些变量 但是 我知道当您将某些内容作为参数传递给函数时 您正在使用副本而不是原始文
  • 在 PHP 中通过 SSH 连接到 MySQL 服务器

    我想通过 ssh 建立一个到我的 mysql 服务器的 ssh 隧道 理想情况下 我会返回一个 mysqli db 指针 就像我直接连接一样 我所在的共享主机没有SSH2 http ca php net ssh2库 但我也许可以使用 PEC
  • 我能知道 BufferedImage 最初的文件类型是什么吗?

    在我的代码中 我有一个缓冲图像 http docs oracle com javase 7 docs api java awt image BufferedImage html那是装载有ImageIO http docs oracle co
  • qtextedit - 调整大小以适合

    我有一个QText编辑 https doc qt io qt 5 QTextEdit html充当 显示者 可编辑为 false 它显示的文本是自动换行的 现在我确实希望设置此文本框的高度 以便文本完全适合 同时也遵守最大高度 基本上 布局
  • docker-compose - 我可以在不重新启动容器的情况下更新 traefik 标签吗?

    我可以使用 docker compose 更新容器上的标签而不重新启动容器吗 理想场景 更改 docker compose yml 中的标签 保存 docker compose yml 运行命令来更新标签 无需重新启动容器 一般来说 更改容
  • Numpy:如何按列堆叠数组?

    假设我有 n 个相同长度的 numpy 数组 我现在想创建一个 numpy 矩阵 使得矩阵的每一列都是 numpy 数组之一 我怎样才能实现这个目标 现在我正在循环中执行此操作 但会产生错误的结果 注意 我必须能够迭代地将它们一一堆叠在一起
  • 从 void ** 到 char ** 的转换有多危险

    所以我们知道标准并不强制指针大小相等 here https stackoverflow com questions 1241205 are all data pointers of the same size in one platform