指向同一内存的不同对齐指针

时间:2016-12-26 13:52:20

标签: c++11 memory-management g++

此代码返回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;

}

0 个答案:

没有答案