首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于malloc和new的有关问题

2012-02-23 
关于malloc和new的问题 stringstrIPAddress127.0.0.1 CNodeInfo*node(CNodeInfo*)malloc(sizeof(CNode

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

热点排行