定义于头文件 <cstdlib> (c++)

void * aligned_alloc ( std::size_t alignment, std::size_t size); (c++17)

分配 size 字节的未初始化存储, 由alignment指定其对齐。 size 参数必须是alignment 的整数倍。

参数:

  alignment - 指定对, 必须是实现支持的合法对齐。

  size - 分配的字节数, alignment的整数倍。

返回值:

  成功时,返回指向新分配内存起始的指针。为了避免内存泄露,返回的指针必须由std::free或std::realloc 解分配。

  失败时,返回空指针。

注意:

  传递不是alignment 的整数倍的size 或不受实现支持或非法alignment 导致函数失败并返回空指针。

  作为实现支持 要求的例子,POSIX函数posix_memalign 接受任何是2的幂且为sizeof(void*) 倍数的alignment, 而基于POSIX的alignmed_alloc 实现继承此要求。

  常规的std::malloc 分配适用于任何对象的大小的内存,此函数适用于对齐分配,例如对SSE, 缓存线或VM页边界。

#include <cstdio>

#include <cstdlib>

int main() {

  int * p1 = static_cast < int* > ( std::malloc ( 10 * sizeof *p1 ) );

  std::printf ( "default-aligned address: %p \n", static_cast < void* > ( p1) );

  std::free ( p1 );

  int * p2 = static_cast < int* > ( std::aligned_alloc ( 1024, 10 * sizeof *p2 ) );

  std::prinf ( "1024-byte aligned address : %p \n", static_cast <void*> ( p2 ) );

  std::free( p2 );

}

std::aligned_alloc的更多相关文章

  1. 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数

    本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...

  2. C++ std::set

    std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...

  3. C++ std::priority_queue

    std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...

  4. C++ std::queue

    std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...

  5. C++ std::multimap

    std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...

  6. C++ std::map

    std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...

  7. C++ std::list

    std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...

  8. C++ std::forward_list

    std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...

  9. C++ std::deque

    std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...

  10. C++ std::array

    std::array template < class T, size_t N > class array; Code Example #include <iostream> ...

随机推荐

  1. $\mathcal{Crypto}$ 共模攻击原理实现以及$\mathcal{CRT}$优化

    \(\mathcal{共模攻击概述}\) 共模攻击是一种攻击 \(\mathcal{RSA}\) 加密的技术,当两个密文使用相同的 \(\mathcal{RSA}\) 公共模数时,攻击者可以使用中国剩 ...

  2. 数据挖掘神经网络—R实现

    神经网络 生物神经网络主要是指人脑的神经网络,它是人工神经网络的技术原型.人脑是人类思维的物质基础,思维的功能定位在大脑皮层,后者含有大约10^11个神经元,每个神经元又通过神经突触与大约103个其它 ...

  3. [ElasticSearch]修改开源安全组件Search Guard-6 用户密码

    ES有很多的安全组件可用,例如: X-pack,Sarch Guard.但目前开源免费的,仅Search Guard. 1 前置条件 Elastic Search 6 服务安装成功,且成功运行. ES ...

  4. [GIT]辨析/区别: git add -u | git add -A | git add . [转载]

    参考文献 git add -u与-A .三者的区别 - CSDN

  5. 用Abp实现双因素认证(Two-Factor Authentication, 2FA)登录(一):认证模块

    @ 目录 原理 用户验证码校验模块 双因素认证模块 改写登录 在之前的博文 用Abp实现短信验证码免密登录(一):短信校验模块 一文中,我们实现了用户验证码校验模块,今天来拓展这个模块,使Abp用户系 ...

  6. abc285G

    ABC 285 G - Tatami Solution 网络流 网格图是一个天然二分图, 可以按 横纵坐标之和 的奇偶性将相邻两格分属于左部和右部. 记'?' 或 '2' 的格子为待匹配点, 记横纵坐 ...

  7. flume基本安装与使用

    解压flume包 到/usr/local/src/目录下 [root@hadoopha01 pack]# tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr ...

  8. JS执行机制--同步与异步

    单线程JavaScript语言具有单线程的特点,同一个时间只能做一件事情.这是因为JavaScript脚本语言是为了处理页面中用户的交互,以及操作DOM而诞生的.如果对某个DOM元素进行添加和删除,不 ...

  9. [人脸活体检测] 论文: Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 论文简介 与人脸生理相关的rppG信号被研究者 ...

  10. Lucas定理——定义、证明、实现、运用

    目录 什么是Lucas定理 证明Lucas定理 Lucas定理求解组合数的C++实现 什么是Lucas定理 这是一个有助于分解组合数来求解的定理,适合模数小,数字大的问题. 有质数 \(p\),对于\ ...