同様にコードをスローします:
template<class T>
T* new_p(){
T* result = (T*) operator new (sizeof(T)); // HERE
memset(result, 0, sizeof(T));
result = new (result) T();
return result;
}
VS2010 で new が機能しないことがあります。
同様にコードをスローします:
template<class T>
T* new_p(){
T* result = (T*) operator new (sizeof(T)); // HERE
memset(result, 0, sizeof(T));
result = new (result) T();
return result;
}
VS2010 で new が機能しないことがあります。
ほとんどの場合、このようなヒープ アサート エラーが発生した場合は、以前に何かを台無しにしたことを意味します。それはおそらく現在のものではありませんmalloc
/new
あなたが実行しているのは問題です。
おそらく、同じ割り当てに対してfree
/delete
を 2 回呼び出したか、ヒープに割り当てられたバッファーをオーバーランした可能性があります。残念ながら、これらは追跡するのが難しいことがよくあります。
新品でこんなに使われているのは見たことがありません。あなたがそのコードで何をしようとしているのか理解していないかもしれませんが、これは私がそうあるべきだと思っていた方法です。
template<class T>
T* new_p(){
T* result = new T();
memset(result, 0, sizeof(T)); //BTW, I doubt this will do good things
return result;
}