如何解决对齐、指针、新建和删除
我正在努力改进内存分配和对齐的使用。 我写了一些代码来对齐和分配内存给结构类型的动态变量:
struct alignas(8) k {};
std::align_val_t al{64};
k* ptr = new(al) k;
//delete ptr; (compiler is telling me to use delete(void*,std::align_val_t) noexcept)
如果我写的这几行是正确的,这里是我的问题: 如何释放内存?我是否必须覆盖删除运算符? 另外,使用对齐的一般目的是什么?这只是声明对象的最小大小吗?最后,sizeof() 和 alignof() 运算符之间有什么区别? sizeof 返回对象的大小,alignof 返回对象的最大变量的大小作为可以存储变量的空间吗?
如果我犯了任何错误,你能解释一下正确的语法吗?
我使用的是 Visual Studio(本例中为 C++ 17)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。