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
while(1) {
*scan_ptr = '\0';
scan_ptr++;
}
复制代码
这不是死循环吗, 早晚不就是越界操作了吗.
作者:
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