C - 内存对齐argv?
C - memory align argv?
我正在 Linux,用 C 编写代码并尝试使用 argv 变量的 align 属性,但没有成功:
我们如何使 argv 参数(每个参数)与定义的边界对齐,比如 16 位,而不首先通过 memcpy 将其复制到对齐的变量或替代品?
有可能吗?
这是不可能的。 align 属性告诉编译器如何对齐它为其生成代码和数据的结构。它还告诉编译器有关外部结构和其他代码生成的数据的实际对齐。
argv 参数由 C 启动代码或 OS 直接提供。除了指针数组的隐式自对齐之外,不应对它们的对齐方式做出任何假设。您不能使用编译器属性更改它,强制编译器做出其他假设也是不可取的。
在某些实现中,argv 变量可以直接指向原始命令行,其中每个参数后的第一个定界符 (space) 已被替换为 null。
在这样的实现中,很明显对齐就是这样,无法控制!
我正在 Linux,用 C 编写代码并尝试使用 argv 变量的 align 属性,但没有成功:
我们如何使 argv 参数(每个参数)与定义的边界对齐,比如 16 位,而不首先通过 memcpy 将其复制到对齐的变量或替代品?
有可能吗?
这是不可能的。 align 属性告诉编译器如何对齐它为其生成代码和数据的结构。它还告诉编译器有关外部结构和其他代码生成的数据的实际对齐。
argv 参数由 C 启动代码或 OS 直接提供。除了指针数组的隐式自对齐之外,不应对它们的对齐方式做出任何假设。您不能使用编译器属性更改它,强制编译器做出其他假设也是不可取的。
在某些实现中,argv 变量可以直接指向原始命令行,其中每个参数后的第一个定界符 (space) 已被替换为 null。 在这样的实现中,很明显对齐就是这样,无法控制!