最近在寫go與C++的混合編程中,暴露給go的C接口因?yàn)椴荒苤苯邮褂萌萜?;我?duì)容器進(jìn)行了轉(zhuǎn)換將之前的std::vector轉(zhuǎn)換成實(shí)際C的數(shù)組;使用:malloc_usable_size(),_msize(),函數(shù)獲取new生成數(shù)組申請(qǐng)的內(nèi)存的大??;
原本想用malloc_usable_size或_msize計(jì)算出的尺寸,當(dāng)作原始的元素size,不曾想,用malloc_usable_size或_msize計(jì)算出的尺寸是大于大于申請(qǐng)的數(shù)量的。這種情況下在釋放我想要釋放的內(nèi)存時(shí),就會(huì)出錯(cuò)。
malloc_usable_size(); // linux 下用于計(jì)算new 或 malloc申請(qǐng)的內(nèi)存大小
_msize(); // windows 下用于計(jì)算new 或 malloc申請(qǐng)內(nèi)存的大小