
代码如下:
DataRow dr=dt.NewRow()
dr[0]=monitorcell[0].ToString()
dr[1]=monitorcell[1].ToString()
……
dr[n]=monitorcell[n].ToString() //定义的列数个数
dt.Rows.Add(dr)
经我测试,除了VC6版本之外,其他VS版本的输出都是两个5有图为证
如你所说的i被释放了,只是指针p的所指向地址的内容没有了(或者说被重置了),*p此时无论如何都是存在的,如下代码,在C中永远是合法的一样:
#include<stdio.h>
void main()
{
int *p= new int
delete p
printf("%d\n",*p)
}
当然你要是再delete p之后把p置空的话当然运行就会出错了,这好像就是所说的野指针?
至于printf语句,或许问题就出在这个printf里面,刚测试过,子函数中即使只printf("\n")亦然会出现你说的结果。这个应该就是VC6不成熟的地方,后面的版本明显已经完善了内存的释放时间机制。
酒后胡言,大神勿喷啊
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)