以下のコードで作成された.exeをデバッグモードで実行すると、アサーションエラーが表示され、プログラムがクラッシュします。ただし、以下のコードのリリースモードで作成された同じexeを実行すると、正常に動作します。
デバッグモードではアサーションエラーが発生するが、リリースモードでは発生しない理由を特定するのに役立ちます。
#include<iostream>
using namespace std;
#include<string.h>
void main()
{
char *buf = new char[5]; //pre-allocated buffer
buf = "Hello";
delete [] buf;
getchar();
//cout<<buf;
//string *p = new (buf) string("hi"); //placement new
//string *q = new string("hi"); //ordinary heap allocation
}