C++之"new"数组之坑
2022-12-21 本文已影响0人
知成
最近在写go与C++的混合编程中,暴露给go的C接口因为不能直接使用容器;我对容器进行了转换将之前的std::vector转换成实际C的数组;使用:malloc_usable_size(),_msize(),函数获取new生成数组申请的内存的大小;
原本想用malloc_usable_size或_msize计算出的尺寸,当作原始的元素size,不曾想,用malloc_usable_size或_msize计算出的尺寸是大于大于申请的数量的。这种情况下在释放我想要释放的内存时,就会出错。
malloc_usable_size(); // linux 下用于计算new 或 malloc申请的内存大小
_msize(); // windows 下用于计算new 或 malloc申请内存的大小