怎样new内存就不是动态的了? 我用如下方法去开辟一块内存:char *pch = new char[10];pch = "aaa";有朋友说上面的话和char *pch = "aaa";的作用一样。一会就没了。请问怎样new开辟内存,才能长久的保存值"aaa" ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char *pch = new char[10]; memcpy(pch, "aaa", 3); //或者strcpy(pch, "aaa");pch[3] = 0; char *pch = new char[10];pch = "aaa";这样是不是有 内存泄露的嫌疑??因为 pch 没有delete.... 用strcpy(pch, "aaa"); 就可以!如果用pch = "aaa",是将pch指向常量"aaa"零时生成的地址,而以前new 出来的空间,就失去控制了,还容易造成内存泄露! 多谢,我明白了。delete我倒是知道。 char *pch = new char[10];pch = "aaa"; 其实上面语句中 new char[10] 内存已经开辟了,在堆上。而 "aaa" 是一个常量字符串或全局字符串,存放在另一个地址空间中。(即不在堆,也不在栈)也就是说,如果不对pch 这个进行delete操作的话,此内存会一直存在,直到程序退出而 全局变量则是由系统控制其销毁。。 象这种小数组,不要使用 net ,因为没那个必要。void test(){ char buf[100]; strcpy( buf, "Hello World!" );}这样用多好,函数返回时,定义的数组 buf 自动释放,多好。 char *pch = new char[10]; // 开辟内存pch = "aaa"; //指针赋值这样会导致 new 出来的内存被忽略掉,造成泄漏pch = "aaa";改成strcpy(pch, "aaa"); 肯定不一样 new在堆上,int temp =30;放在栈上函数结束它也over了 有使用XTP界面库的朋友请进。 在对话框上怎么显示坐标系然后接收数据后在上面自动画曲线,我做界面,刚学MFC请各位指点 使用VC查看代码的问题 急!急!急! 如何设置一个环境变量,以后都可以访问. 一个既能聊天又能传输文件的程序,出现“内存不足”???? 求助!如何编写屏幕键盘以输入UNICODE字符?比如俄文 VC下怎样添加按纽的按下 和弹起状态?? 请教:如何判断象素点的颜色? 装了微软新sdk出麻烦了,谁能帮忙看看??? CListBox控件的重绘问题 以下两种 最大化子窗口 方法的区别???
memcpy(pch, "aaa", 3); //或者strcpy(pch, "aaa");
pch[3] = 0;
pch = "aaa";这样是不是有 内存泄露的嫌疑??
因为 pch 没有delete....
如果用pch = "aaa",是将pch指向常量"aaa"零时生成的地址,而以前new 出来的空间,就失去控制了,还容易造成内存泄露!
pch = "aaa"; 其实上面语句中 new char[10] 内存已经开辟了,在堆上。
而 "aaa" 是一个常量字符串或全局字符串,存放在另一个地址空间中。(即不在堆,也不在栈)
也就是说,如果不对pch 这个进行delete操作的话,此内存会一直存在,直到程序退出
而 全局变量则是由系统控制其销毁。。
象这种小数组,不要使用 net ,因为没那个必要。
void test()
{
char buf[100];
strcpy( buf, "Hello World!" );
}
这样用多好,函数返回时,定义的数组 buf 自动释放,多好。
pch = "aaa"; //指针赋值这样会导致 new 出来的内存被忽略掉,造成泄漏pch = "aaa";
改成
strcpy(pch, "aaa");