【问题标题】:C - memory align argv?C - 内存对齐argv?
【发布时间】:2015-03-19 07:30:09
【问题描述】:

我在 Linux 上,用 C 编码并尝试使用 argv 变量的 align 属性,但没有运气:

我们如何使 argv 参数(每个参数)与定义的边界对齐,例如 16 位,无需先将其复制到对齐的变量,通过 memcpy 或替代方法? p>

有可能吗?

【问题讨论】:

  • 您认为谁需要 argv 字符串进行任何特定对齐,为什么?
  • @chqrlie:没有人,甚至我自己!只是为了好奇:)

标签: c linux argv memory-alignment


【解决方案1】:

这是不可能的。 align 属性告诉编译器如何对齐它为其生成代码和数据的结构。它还告诉编译器外部结构和其他代码生成的数据的实际对齐方式。

argv 参数由 C 启动代码或操作系统直接提供。除了指针数组的隐式自对齐之外,不应对它们的对齐做出任何假设。你不能用编译器属性来改变它,不建议强制编译器做出其他假设。

【讨论】:

    【解决方案2】:

    在某些实现中,argv 变量可以直接指向原始命令行,其中每个参数后的第一个分隔符(空格)已被替换为 null。 在这样的实现中,很明显对齐就是它的本质并且无法控制!

    【讨论】:

    • 绝对是的。非常感谢 +1
    猜你喜欢
    • 2015-09-24
    • 2014-10-24
    • 2018-07-22
    • 1970-01-01
    • 2017-06-02
    • 2011-05-25
    • 2012-11-13
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多