一个用malloc 或者用new分配空间的 吓死我的一个问题!
程序的全部内容如下:
#include <memory.h>
#include <stdio.h>
#include <malloc.h>
void main(void){
int i, num=20, offset=0;
char * c=(char*)malloc(num); //换成new 也是这样的结果
memset(c,0,num);
for(i=0;i<num+offset;i++)
*(c+i)=i;
for(i=0;i<num+offset;i++)
printf("%d=%d\n",i,*(c+i));
free(c);
// printf("%d=%d\n",i-1,*(c+i-4)); // 不注销的话 还是能打印出来的
// delete []c; // 如果前面是new 就用 delete
if(c==NULL)
return ; // 并没有返回阿 !!!!
for(i=0;i<num+offset;i++)
printf("%d\n",*(c+i)); // 居然还可以打出 全部是-35的结果
}
这个结果吓死我了 我写的代码都是 用malloc 或者new 来分配 再用free 或者delete 来释放 用c==NULL 来判断 指针是否是空的阿
另外 如果offset=20 或者其他的值的时候 不在调试版而在发行版下居然没有错阿
请大侠详细指点,市面上的c c++ 书讲得太简单了喔