gpt4 book ai didi

c++ - boost::shared_array 和对齐的内存分配

转载 作者:行者123 更新时间:2023-11-28 08:26:09 28 4
gpt4 key购买 nike

在 Visual C++ 中,我尝试动态分配一些 16 字节对齐的内存,以便我可以使用需要内存对齐的 SSE2 函数。现在这是我分配内存的方式:


boost::shared_array aData(new unsigned char[GetSomeSizeToAllocate()]);

我知道我可以使用 _aligned_malloc 来分配对齐的内存,但是当它试图释放我的内存时,这会导致 boost 出现问题吗?这是 boost 用来释放内存的代码:

template inline void checked_array_delete(T * x)
{
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete [] x;
}

delete 释放的内存必须用 new 分配,对吧?关于如何解决这个问题的任何提示?

最佳答案

boost::shared_array 有一个构造函数,它将删除器作为第二个参数来代替默认的 delete[]

这意味着您可以像那样传递合适的释放函数的地址。

boost::shared_array<X> array(allocate_x(100), &deallocate_x);  

引用文献:Boost.SharedArray

关于c++ - boost::shared_array 和对齐的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999397/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com