此代码返回double *指针u和r的相同值。但是,如果我删除属性__((aligned(16)))它的工作正确。属性_((algined(16))的这种用法是否无效?
编辑:我在ubuntu 16.04(32位)上使用g ++ 5.4.0
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;
}