关于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的成员的构造函数也没调用,有问题。对内置或许不会有吧。