【发布时间】:2014-08-12 06:22:44
【问题描述】:
我们正在使用:Windows XP 上的 Turbo C3 编译器。
我们对以下代码sn-p有一个问题:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *ptr;
ptr=(char*)malloc(10*sizeof(char));
strcpy(ptr,"data structure");
printf("\n *ptr=%s \n add=%u",ptr,ptr);
free(ptr);
printf("\n *ptr=%s \n add=%u",ptr,ptr);
getch();
}
在上面的程序中,即使在释放 ptr 之后,ptr 的值和 ptr 的地址也是正确显示的。
请说出这个问题背后的解决方案和原因。 谢谢 知识库
【问题讨论】:
-
请不要在 C 中转换 malloc 的返回值
-
你真的在使用 22 岁的编译器吗?如果你这样做了,那可能是升级的好时机;有很多免费的选择。
-
不,不要升级! MS DOS 是未来!