当前位置: 代码迷 >> C++ >> c++中的堆内存储器
  详细解决方案

c++中的堆内存储器

热度:4077   发布时间:2013-02-26 00:00:00.0
c++中的堆内存
class People
{
    char* name;
}

People( char * str )
{
    name=str;
}


如上构造函数中一定要为name分配储存空间吗?? name和str不是指向堆中同一块区域吗? 
如: char* str="要加薪" ;

c++ plus 怎么说不行
c++

------解决方案--------------------------------------------------------
不是不行,只是不好。会导致多个对象指向同一块内存,存隐患。
------解决方案--------------------------------------------------------
name = "aaa",这个是成立的,不过仅仅是复制了一个地址交给了name而已,而且还是个常量区的地址,若你要是试图通过name修改字符串,就等着程序崩溃吧。
------解决方案--------------------------------------------------------
char *str = "test"
这样定义字符串传入是可以的,但是你在实际项目中 又有几个是定义在字符常量区的;
当你传入一个不是在常量区的字符指针就知道这样是不行的了。不可能你写一个类以后用到的时候都是传入的常量区的参数吧!!  很不安全的