C++中动态数组的有关问题

C++中动态数组的问题如题,下面代码#include iostreamusing namespace stdint main( ) {char a[] asd

C++中动态数组的问题
如题,下面代码


#include <iostream>
using namespace std;

int main( ) 
{   
    char a[]= "asd";
    char *b=new char[3];
    memcpy(b,a,sizeof(a));

    cout<<b<<endl;

    delete [] b;
    return 0;
}


在VS2010上运行,结果倒是有,就是程序不结束,得手动关闭,把释放语句去掉后,就没事了,这是怎么回事呢? C++?动态数组
[解决办法]
b没有结束标记
[解决办法]
a实际上有4个字符,asd+最后一个结束符'\0'
所以b要申请4个字节的大小。
memcpy要拷贝4个字节
或者用strcpy,不用指定长度,会拷贝包括最后1个'\0'
delete[] b是必须的。
[解决办法]

//我这里输出正常的!g++ ,
//先清空试试吧!
char *b=new char[3];
memset(b, '\0', 3);
    memcpy(b,a,sizeof(a));