64,654
社区成员
发帖
与我相关
我的任务
分享
char* cp = new char[100];
int* ip = (int*)cp;
delete ip;
ip = cp = NULL;
class A
{
public:
A(){}
~A()
{
printf("~A");
}
};
A *pa=new A;
delete pa; // 会调用A的析构函数,输出“~A”
A *pa=new A;
delete (int *)pa; // 不会调用A的析构函数
std::vector< std::vector<T> > data(r);
for(int i =0; i < r; ++i){
data[i].resize(c);
}
template <typename T>
inline T** array2_new(int r, int c)
{
T** p = new T*[r];
int* data = new T[r*c];
memset(data, 0, r*c*sizeof(T));
for(int i=0; i<r; i++)
p[i] = data + i*c;
return p;
}
template <typename T>
inline void array2_delete(T** p)
{
delete[] p[0];
delete[] p;
}
如果delete与指针类型无关,那第二个函数可不可以这样写?
inline void array2_delete(void** p)
{
delete[] *p;
delete[] p;
}