Chinaunix

标题: 内存分配问题 [打印本页]

作者: liyuan02    时间: 2012-09-19 14:49
标题: 内存分配问题
Linux程序设计中文第4版  关于内存有这么一句话:

在 C 语言中,一个最常见的问题是试图在一个已分配的内存块之后写数据。

       char *some_memory;
       char *scan_ptr;

    some_memory = (char *)malloc(megabyte);

    scan_ptr = some_memory;

/*  这一段copy字符串是正确的 */
    if (scan_ptr != NULL) {
        sprintf(scan_ptr, "Hello World\n");
        printf("%s", scan_ptr);
      }


/*  这一段是错误的 */
if (some_memory == NULL) exit(EXIT_FAILURE);

    while(1) {
        *scan_ptr = '\0';
        scan_ptr++;
    }



为什么?  不都是写数据吗?

作者: linux_c_py_php    时间: 2012-09-19 14:58
  1.     while(1) {
  2.         *scan_ptr = '\0';
  3.         scan_ptr++;
  4.     }
复制代码
这不是死循环吗, 早晚不就是越界操作了吗.
作者: liuiang    时间: 2012-09-19 15:02
楼主你是打算根据这个指针,清掉整个应用空间的数据?然后继续清空所有栈的数据?然后雄纠纠气昂昂跨过3G边界,开始清空整个操作系统?然后继续往上清空外部设备的映射空间?继续清空bios?再然后回滚回来,清空自己的代码段?再清空自己的数据段和bss段?再清空整个堆空间?再次清空栈上的数据,然后再次跨越3G界限开始清系统…………
作者: liuiang    时间: 2012-09-19 15:03
回帖太快,少了个



么?
作者: liyuan02    时间: 2012-09-19 15:14
  liuiang  楼主太逗了  我喜欢你  哈哈   这段代码好像真有问题 我再看一下。 谢谢大家!!!!
作者: cokeboL    时间: 2012-09-19 17:06
回复 4# liuiang


    楼主说喜欢你诶。。。 你猜楼主是男的还是女的?
作者: liuiang    时间: 2012-09-19 17:14
女的都上csdn了。另外发现,我的回答有很多问题,貌似穿越了,最近干什么都脑袋一坨浆糊的,哎。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2