-1是一个有效的指针地址吗[重复]

2024-03-19

可能的重复:
指针(地址)可以为负数吗? https://stackoverflow.com/questions/3304795/can-a-pointer-address-ever-be-negative

我正在考虑使用 memset 将结构初始化为所有 -1(因为它使用 没有带符号的数字,零是有效值)。

-1 是有效的指针地址吗?我的想法还有其他问题吗? 注意:平台是linux/gcc/x86

附:我正在尝试初始化一个不全是指针的结构,其中零对所有无效的类似值都有效,因此我可以选择在一个函数中进行部分初始化,并稍后将未初始化的字段初始化为默认值。如果有一个模式/策略可以在 c 中执行此操作?


的解释-1因为指针是依赖于体系结构的,因此不可靠。

一般来说,memset旨在设置字节,而不是指针。 C 不保证各个字节如何组合成指针。即使您的解决方案有效,您也必须记录其工作原理和原因。

更好的主意,当NULL是一个有效值,就是将所有指针设置为适当类型的哨兵。所以,如果你的结构有一个字段int *ip:

static const int sentineli;

// in the initialization:
foo->ip = (int *)&sentineli;

然后与该值进行比较。这是自我记录的。

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

-1是一个有效的指针地址吗[重复] 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • 如何使用 OpenCV 查找图像中三角形的方向

    我试图找到图像中三角形的方向 下面是图片 这些三角形指向上 下 左 右 这不是真实的图像 我已经使用精明的边缘检测来查找边缘 然后找到轮廓 然后膨胀的图像如下所示 我寻找方向的逻辑 我想使用的逻辑是 在三个角坐标中 如果我可以识别三角形的基
  • JavaScript 定界文档

    我需要 JavaScript 中类似heredoc的东西 您对此有什么想法吗 我需要跨浏览器功能 我找到了这个 heredoc div ul li a href zzz zzz a li ul div 我认为这对我有用 Try ES6 字符
  • 为什么 Scala 隐式将 Char 转换为 Int?

    看看scala的Predef对象 这是自动导入的 我发现跟随宝石 http www scala lang org docu files api scala Predef 24object html char2int 28Char 29 im
  • 进度对话框显示太晚

    我有一个应用程序 我想执行以下操作 显示带有按钮和 TextView 的活动 用户单击按钮 应用程序会显示一个进度对话框 应用程序调用网络服务来获取列表 进度对话框被隐藏 并且列表选择对话框出现以显示检索到的列表 用户选择列表中的一项 项目
  • “include_examples”和“it_behaves_like”有什么区别?

    在 RSpec 中 有什么区别it behaves like and include examples The 文档 https www relishapp com rspec rspec core v 2 14 docs example
  • 二项式系数的计算算法

    我需要一种在不耗尽内存的情况下计算组合的方法 这是我到目前为止所拥有的 public static long combination long n long k nCk return divideFactorials factorial n
  • Azure Function App忽略依赖关系

    我有一个连接到数据库的 Azure 函数 但它失败并显示以下消息 找不到类型或命名空间名称 Npgsql 您是否缺少 using 指令或程序集引用 In project json 我有以下声明 frameworks net46 depend
  • Jasmine 获取当前测试结果

    我正在使用 Jasmine 3 3 1 与 ProtractorJS 的组合 我的要求是存储每个规范 或描述 测试 的结果 并使用 afterEach 方法在 Testrail 系统中更新结果 我想将结果存储到变量 testResult 中
  • 如何同时对多个 SKSpriteNode 进行动画处理?

    我很新SpriteKit 我有一组节点需要一起移动到每个节点的不同点 在所有节点的动画完成后 我想做其他事情 我正在做这个UIView之前的组件 A UIView animateWithDuration completion 块正在提供我需
  • 将 React-Native (Web) 集成到 Django 中。如何为所有网址添加前缀?

    我正在使用反应导航并试图找出如何向所有端点添加前缀 跟随我的LinkingConfiguration这不符合我的要求 const prefixes Linking makeUrl app const prefixes example app
  • Android 12:BLE 扫描未找到任何设备

    我正在尝试将低功耗蓝牙应用程序 连接到自定义物理设备 升级到 Android 12 我已按照文档中的方式设置了所有内容 但它不起作用 权限
  • Android 对话框宽度

    我似乎无法控制对话框宽度 我有一个像这样的简单布局
  • 如何为 WS-Security 生成 UsernameToken?

    我有一些 Web 服务 用 Java 编写 我需要在 NET 中为其创建客户端 Web 服务具有 WS Security 并且需要密码摘要 首先 我在 SoapUI 中测试了它 它适用于 POST http 192 168 100 101
  • 尽管有查询字符串,但使用 sql COUNT 时 ExecuteNonQuery 返回 -1

    因为某些原因 ExecuteNonQuery 在 C 中返回 1 尽管当我单独运行查询时 该值返回所需的实际值 例如 try var connString Data Source ServerName InitialCatalog Data
  • 为什么div的位置会受到其子元素的margin-top的影响?

    这是我的标记 CSS body background color 353535 parent background color eee child background color 1b1b1b margin 60px auto 10px
  • 如何滚动到网格中的指定记录

    我们如何滚动到网格中定义的记录 记录或索引 使用缓冲渲染器 通过调用以下命令非常容易 grid view bufferedRenderer scrollTo 0 false callback scope 但是如何使用默认渲染器来完成此操作呢
  • Python Heroku 允许推送的 .exe 运行 - OSError: [Errno 13] 权限被拒绝

    我必须将 exe 文件推送到 heroku 才能创建发票 pdf 它在本地工作没有任何问题 但在 heroku 上我收到错误 OSError Errno 13 Permission denied 可能是因为我不被允许执行 exe 文件 所以
  • 在 http 和 https 上运行 Gunicorn

    当我启动 Gunicorn 服务时 我当前使用以下命令来启动它 gunicorn certfile Projects thebodyofchrist us crt keyfile Projects thebodyofchrist us ke
  • MySQL 中两个时间字段的分钟差异

    我用 时间 字段设置了 MySQL 数据库 它不是传统意义上的 HH MM 而是事件发生的时间 因此值为 5 45 的事件发生在比赛还剩 5 分 45 秒时 12 25 发生在还剩 12 分 25 秒时 依此类推 我希望能够找出经过的总时间
  • -1是一个有效的指针地址吗[重复]

    这个问题在这里已经有答案了 可能的重复 指针 地址 可以为负数吗 https stackoverflow com questions 3304795 can a pointer address ever be negative 我正在考虑使