以下のプログラムでは、オーバーロードされたoperator new []
が呼び出されています。しかし、私がこの機能をコメントすると、私のオーバーロードされたoperator new
が呼び出されています。それはdefault new []
と呼ばれるべきではありませんか?新しい演算子はnewまたはnew []と呼ばれますか?
#include <iostream>
#include <stdlib.h>
using namespace std;
void *operator new (size_t os)
{
cout<<"size : "<<os<<endl;
void *t;
t=malloc(os);
if (t==NULL)
{}
return (t);
}
//! Comment This below function
void* operator new[](size_t size){
void* p;
cout << "In overloaded new[]" << endl;
p = malloc(size);
cout << "size :" << size << endl;
if(!p){
}
return p;
}
void operator delete(void *ss) {free(ss);}
int main()
{
int *t=new int[10];
delete t;
}
によって呼び出されます。 [clang-3.5はそれを呼んでいます。](http://melpon.org/wandbox/permlink/kDxBGkv2bLVBUkj3) – mindriot
@Deduplicator実際、['-O2'を削除すると"それを修正する "](http://coliru.stacked- crooked.com/a/12a030edc1905452) – mindriot