读书人

关于malloc和new的有关问题

发布时间: 2012-02-23 22:01:35 作者: rapoo

关于malloc和new的问题

string strIPAddress = "127.0.0.1 "
CNodeInfo* node = (CNodeInfo*)malloc(sizeof( CNodeInfo));
node-> SetIPAddress(strIPAddress);
这里会报错写入位置0xcdcdcdcd 时发生访问冲突

但是如果写成string strIPAddress = "127.0.0.1 "
CNodeInfo* node = new CNodeInfo();
node-> SetIPAddress(strIPAddress);
把用malloc动态分配内存换成new就不会出错了
我想问一下这是怎么回事呢

[解决办法]
所以,
如果调用 malloc 的话,
还需要调用 定位new构造对象 才行 ~
[解决办法]
malloc只是给对象分配内存,但是new调用operator new()还调用构造函数
[解决办法]
因为CNodeInfo构造函数没调用,所以类型为sting的成员的构造函数也没调用,有问题。对内置或许不会有吧。

读书人网 >C++

热点推荐