C struct hack 工作中

2023-12-02

这是在使用 C struct hack 时分配的“额外”内存的方式吗?

问题:

下面我有一个 C struct hack 实现。我的问题是如何使用我通过黑客分配的“额外”内存。有人可以给我一个使用额外内存的例子吗?

#include<stdio.h>
#include<stdlib.h>

int main()
{

    struct mystruct {

        int len;
        char chararray[1];

    };

    struct mystruct *ptr = malloc(sizeof(struct mystruct) + 10 - 1);
    ptr->len=10;


    ptr->chararray[0] = 'a';
    ptr->chararray[1] = 'b';
    ptr->chararray[2] = 'c';
    ptr->chararray[3] = 'd';
    ptr->chararray[4] = 'e';
    ptr->chararray[5] = 'f';
    ptr->chararray[6] = 'g';
    ptr->chararray[7] = 'h';
    ptr->chararray[8] = 'i';
    ptr->chararray[9] = 'j';


}

是的,这是(并且曾经)的标准方式C创建和处理可变大小的struct.

这个例子有点冗长。大多数程序员会更熟练地处理它:

struct mystruct {
        int len;
        char chararray[1];  // some compilers would allow [0] here
    };
    char *msg = "abcdefghi";
    int n = strlen (msg);

    struct mystruct *ptr = malloc(sizeof(struct mystruct) + n + 1);

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

C struct hack 工作中 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • WCF工作流服务REST接口[重复]

    这个问题在这里已经有答案了 可能的重复 WF4 WCF 中的 RESTful 工作流服务端点 我正在尝试使 Windows Workflow Services 4 0 使用 REST 接口 我有一个非常简单的工作流服务 名为 Service
  • 加载谷歌地图时,Safari v5 隐藏 div

    我在 Mac 上使用 Safari v5 时遇到问题 当我的 Google Map Api 加载到页面中时 它隐藏了我的一些其他 div 它们是绝对定位的 在地图加载之前 页面会正确呈现 如果我有一个没有地图的页面 则不会发生问题 例子 w
  • 如何在运行时设置 JTextField 的宽度?

    有人可以帮我如何设置 a 的宽度吗JTextField在运行时 我希望在运行时调整我的文本字段的大小 它将询问用户长度 然后输入将更改文本字段的宽度 if selectedComponent instanceof javax swing J
  • 我正在尝试获取唯一的 CPU ID

    我使用下面的代码来获取唯一的 CPU ID 我在网上找到了使用此代码的各种示例 然而 一个偶然的机会 我碰巧拥有两台华硕笔记本电脑 一个是四核 i5 另一个是重型 i7 八核 两者都是 64 位机器 令我大吃一惊的是 它们都产生相同的 唯一
  • 如何在Powershell中解压文件?

    我有一个 zip文件 需要使用 Powershell 解压其全部内容 我正在这样做 但它似乎不起作用 shell New Object ComObject shell application zip shell NameSpace C a
  • 如何无限期删除 PouchDB 数据库以释放空间?

    如何删除 PouchDB 中的数据库以再次释放磁盘空间 删除仅设置参数 deleted 并保留记录的数据 但是 如何才能以真正删除记录并节省一些空间的方式删除记录呢 因为我想时不时地重置数据库 这样它就不会变得太大 听起来您正在寻找压实 它
  • 如何在asp.net中显示警告框

    我有一个带有提交按钮的注册页面 我想在 用户单击提交按钮 时显示一个警报框 然后 用户输入的数据被插入到数据库中 int i obj IU SubscriberMaster 0 txtFirstname Text txtLastname T
  • Python删除输入行

    我想在 python 3 中有一个输入循环 其中输入的信息会自动从终端删除 f eks 3秒后 我知道 r 的功能可以返回行 但在输入后很难自动换行 while True inputStr input Add the hidden word
  • 如何使用案例删除mysql中的重复项

    现在我正在使用类似的方法来删除 mysql 表中的重复项 delete t2 from my table1 as t1 my table1 as t2 where t1 TestCase t2 TestCase and t2 id gt t
  • 为 Razor 调整自定义 Html Helper(它使用 HtmlTextWriter 因此返回 void)

    问题 我有一个为 WebFormViewEngine 视图编写的非常漂亮的菜单 Html 帮助器 该引擎允许您的助手返回 void 但仍然能够使用 Html Theseus 这对我的助手来说非常有用 因为它可以使用 HtmlTextWrit
  • Python:使用批量 API V3 将订阅者添加到 mailchimp

    我试图编写一个函数来在 mailchimp 中创建订阅者 但出现错误 并且我不明白出了什么问题 我在用着python mailchimp 是的 我有正确的列表 ID 而不是 000000 My code from mailchimp3 im
  • Sequelize - findOrCreate 在“through”表上、belongsToMany 关联上

    首先 我对 Node JS 相当陌生 对 Sequelize 甚至更陌生 这已经困扰我一段时间了 我有以下模型实体 Match js module exports function sequelize DataTypes var Match
  • 禁用浏览器缓存

    Issue 我经常使用样式表 更改一些内容并检查它的外观 然而 大多数 如果不是全部 当前浏览器都会存储样式表 因此不会让我看到差异 只有在多次重置 Safari 后 按清空缓存按钮才会突然更新 但这确实很烦人 Question 有没有办法
  • Html & JS 点击时将图像旋转 90 度

    我试图在单击时向右旋转该图像每次单击 图像都会向右旋转 90 度 因此单击 4 次会将其恢复到原始位置 由于某种原因 将类 rotateimg90 分配给图像不起作用 function rotate90 alert rotate theIm
  • 在 matplotlib 中合并颜色图

    我想合并两个颜色图以生成 imshow 图 我想使用 RdBu 的范围 0 4 到 0 4 然后从 0 4 到最大值 比如 1 5 我想使用从相同的蓝色到另一种颜色 例如绿色 的渐变 我怎样才能做到这一点 这是我到目前为止所取得的进展 im
  • 如何将 @class 前向声明翻译为 Swift?

    我在 Objective C 中的 AppDelegate 中有 class PhoneViewController interface AppDelegate NSObject
  • 静态字段初始化顺序 (C#) - 有人可以解释这个片段吗?

    我是一名正在学习 C 的 C 程序员 我目前正在阅读 C 4 0 in a Nutshell 我在第 74 页看到了这个声明 片段 静态字段初始值设定项运行在 字段的顺序 宣布 下面的例子 说明了这一点 X 被初始化为 0 和 Y 初始化为
  • 在 Linux 上使用 cmake 独立编译 PahoMqttCpp 示例

    My goal 就是使用示例代码async subscribe cpp来自 PahoMqttCpp 项目 https github com eclipse paho mqtt cpp 作为一个独立的应用程序 然后根据我的需要对其进行修改 我
  • 使用“pip”更新 pyOpenSSL 和 pandas 失败,并显示“TypeError:resolve() 获得意外的关键字参数“replace_conflicting””

    当我尝试更新或安装任何版本时pandas or pyOpenSSL 对于任何实例sudo pip un install update no use wheel pandas pyOpenSSL xattr stevedore using p
  • C struct hack 工作中

    这是在使用 C struct hack 时分配的 额外 内存的方式吗 问题 下面我有一个 C struct hack 实现 我的问题是如何使用我通过黑客分配的 额外 内存 有人可以给我一个使用额外内存的例子吗 include