关于wstring与指针的纠结有关问题,前辈们请进

关于wstring与指针的纠结问题,前辈们请进
小弟初学,请教给位前辈。


LPWSTR lpOutBuffer = NULL;

lpOutBuffer = new WCHAR[dwSize/sizeof(WCHAR)];
WinHttpQueryHeaders(
hRequest, 
flag, 
WINHTTP_HEADER_NAME_BY_INDEX, //0, 
lpOutBuffer,
&dwSize,
WINHTTP_NO_HEADER_INDEX
);
wstring result;
result = lpOutBuffer;

delete [] lpOutBuffer;

以上代码中:“result = lpOutBuffer;”这句是指 将lpOutBuffer指针指向地址的值(即字符串)赋给result么?还是指将lpOutBuffer指针地址赋给result呀?

执行“delete [] lpOutBuffer;”以后result 会安全么?

小弟初学,基础性的东西很差,还请各位前辈多多指点:)谢谢

------解决方案--------------------
没有问题的,你可以看看wstring类的构造函数,应该是深拷贝

------解决方案--------------------
楼主写的完全没有问题,不用担心
拷贝有两种:深拷贝,浅拷贝当出现类的等号赋值时,会调用拷贝函数在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的。但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。所以,这时,必须采用深拷贝。深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问题。简而言之,当数据成员中有指针时,必须要用深拷贝。
------解决方案--------------------
是把数据赋值给wstring, 大胆的delete
------解决方案--------------------
执行“delete [] lpOutBuffer;”以后result 会安全么?
----------
执行“delete [] lpOutBuffer;”以后result 是很安全的!!