hur.cn - 华软网

 热门搜索

不知道malloc怎么用才对,执行出错,内存不可读,求解答

  作者:未知    来源:网络    更新时间:2011/9/16

#include <iostream>
#include <malloc.h>
#include <string>
using namespace std;
typedef struct
{ string m;
}A,*H;
int main()
{H h=(H)malloc(sizeof(A)); 
 H k=new A;
h->m=" hh";
 k->m=" kk";
  cout<<k->m;
 cout<<h->m<<endl;
 free (h);
 delete k;
 getchar();
return 1;
}
---华软 网友回答---
并不是malloc错了,是
h->m=" hh";错了,string是个对象,具体我也不说了,你sizeof(string)看看是多少就知道了
---华软网友回复---
malloc最好不要分配C++类对象,因为malloc不会执行类的初始化工作,即不会调用类的构造函数
---华软网友回复---
 h=(H)malloc(sizeof(A));  
 H k=new A;
重复了!@
malloc不会调用构造函数
new会调用

---华软网友回复---
怎么很多人喜欢把对象放到结构体里面,竟然用sizeof来计算大小,这个是基础问题来,还是粗心大意来?
---华软网友回复---
引用 4 楼 shenyi0106 的回复:
怎么很多人喜欢把对象放到结构体里面,竟然用sizeof来计算大小,这个是基础问题来,还是粗心大意来?

基础问题,惭愧,很多东西都是只知其然 不知其所以然,现在在看think in c++想深入了解一下      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。