资源的分配与回收方法应配套使用
2.6 ID_incompatibleDealloc
使用了某种分配方法,就应使用与其配套的回收方法,否则会引发严重错误。
示例:
void foo() {
T* p = new T;
....
free(p); // Non-compliant, use ‘delete’ instead
}
void bar(size_t n) {
char* p = (char*)malloc(n);
....
delete[] p; // Non-compliant, use ‘free’ instead
}
不同的分配回收方法属于不同的资源管理体系,用 new 分配的资源应使用 delete 回收,malloc 分配的应使用 free 回收。
相关
依据
ISO/IEC 9899:1999 7.20.3.2(2)-undefined
ISO/IEC 9899:2011 7.22.3.3(2)-undefined
ISO/IEC 14882:2003 3.7.3.2(3)
ISO/IEC 14882:2011 3.7.4.2(3)-undefined