C - 内存对齐argv?

时间:2015-03-19 07:30:10

标签: c linux argv memory-alignment

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

我们怎样才能使argv参数(每个参数)与定义的边界对齐,比如16位,而不先将它复制到对齐的变量,通过memcpy或替代?

甚至可能吗?

2 个答案:

答案 0 :(得分:2)

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

argv参数由C启动代码或OS直接提供。除了指针数组的隐式自对齐之外,不应该假设它们的对齐。您不能使用编译器属性更改它,不建议强制编译器做出其他假设。

答案 1 :(得分:1)

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