在Visual 2017 C++17中,下列程序出错:
#include <iostream>
int main()
{
using namespace std;
align_val_t alignment = (align_val_t)1024;
int* p = new(alignment) int(3);
cout << (unsigned long long)(p) % 1024;
delete p;
}错误的C2956大小的去分配函数‘操作符删除(void*,size_t)’将被选择为位置去分配函数
该程序是在gcc-8中编译的,没有错误.如何在VS中解决这个程序?
发布于 2022-07-12 05:50:51
这是MSVC中的一个错误,不幸地被关闭为“低优先级”:https://developercommunity.visualstudio.com/t/using-c17-new-stdalign-val-tn-syntax-results-in-er/528320。
解决办法:
operator delete[](void* ptr, std::align_val_t al)。std::aligned_alloc。_aligned_malloc()。这必须与_aligned_free()配对。immintrin.h的_mm_malloc(size, align) (或仅使用intrin.h)。这也必须与_mm_free()配对,但在Windows、Linux和MacOS之间是可移植的。https://stackoverflow.com/questions/55207941
复制相似问题