以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 指针问题探讨 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=44741) |
-- 作者:fangel2000 -- 发布时间:4/2/2007 5:12:00 PM -- 指针问题探讨 char *p = (char *) malloc(100); strcpy(p, “hello”); free(p); // p 所指的内存被释放,但是p 所指的地址仍然不变 … if(p != NULL) // 没有起到防错作用 { strcpy(p, “world”); // 出错 } 大家来探讨一下上面的这个程序,free(p)以后,p成了野指针:p 所指的地址仍然不变,但是p指向的内容改变了,所以说p!=null,为什么下面strcpy会出错捏? |
-- 作者:一分之千 -- 发布时间:4/3/2007 4:57:00 PM -- 该指针所指内存已经被释放,如何还能进行拷贝工作? 杯子都没了你把水盛哪里啊? |
-- 作者:cqthinking -- 发布时间:4/6/2007 5:48:00 PM -- #include <iostream> using namespace std; main(){ char *p=(char *)malloc(100*sizeof(char)); strcpy(p,"aaaaaaa"); cout<<p<<endl; free(p); cout<<p<<endl; if(p!=NULL){ strcpy(p,"bbbbbb"); cout<<p<<endl; } } 没有错,早我的机器上编译执行都可以,vc++6.0 |
-- 作者:fangel2000 -- 发布时间:4/7/2007 8:46:00 AM -- 运行是没有错误,但是的确存在问题 我想问的是:这里的内存释放到底是什么意思??就这里不太懂。虽然内存释放了,但是P所指的地址仍然不变啊 |
-- 作者:卷积内核 -- 发布时间:4/7/2007 8:08:00 PM -- 你释放掉内存,也就是该指针在你后面没有重新赋值之前是没有用的了,你还考虑它里面内容有什么意义呢?释放内存是给别的程序用,如果没有释放功能那有多少内存够你用呢?128M用一分钟满了,2G内存用不了一个小时就完了,那你写的程序有什么意义呢?你的程序运行起来需要多少内存才够呢? |
-- 作者:fangel2000 -- 发布时间:4/9/2007 4:40:00 PM -- "该指针在你后面没有重新赋值之前是没有用的了" 呵呵。知道了 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
74.219ms |