C++11 指向同一内存的不同对齐指针

C++11 指向同一内存的不同对齐指针,c++11,memory-management,g++,C++11,Memory Management,G++,这段代码总是为双*指针u和r返回相同的值。但是,如果我删除属性_uuu((aligned(16)),它将正常工作。属性((algined(16))的这种用法是否无效 编辑:我正在ubuntu 16.04(32位)上使用g++5.4.0 int main(无效){ 双*uuu限制uuu属性uuu((对齐(16)))u=(双*)对齐u分配(161252*2502*sizeof(双)); std::cerr。我看到了u和r的不同值。当您使用语言扩展时,您应该提到您的目标编译器,最好相应地添加标记。确保

这段代码总是为双*指针u和r返回相同的值。但是,如果我删除属性_uuu((aligned(16)),它将正常工作。属性((algined(16))的这种用法是否无效

编辑:我正在ubuntu 16.04(32位)上使用g++5.4.0

int main(无效){
双*uuu限制uuu属性uuu((对齐(16)))u=(双*)对齐u分配(161252*2502*sizeof(双));

std::cerr。我看到了
u
r
的不同值。当您使用语言扩展时,您应该提到您的目标编译器,最好相应地添加标记。确保示例将编译并运行。此示例缺少必要的包含文件。告诉您正在使用的编译器,并为该编译器添加标记。
int main(void){
double* __restrict __attribute__((aligned(16))) u=(double*)aligned_alloc(16,1252*2502*sizeof(double));
std::cerr<<"u after alloc: "<<u<<std::endl;
memset(u,0,1252*2502*sizeof(double));
std::cerr<<"u after memset: "<<u<<std::endl;
double* __restrict __attribute__((aligned(16)))r=(double*)aligned_alloc(16,1252*2502*sizeof(double));
std::cerr<<"r after alloc: "<<r<<std::endl;
memset(r,0,1252*2502*sizeof(double));
std::cerr<<"r after memset:"<<r<<std::endl<<std::endl;

}