c#设计的表头如图,往表里填数据的程序如图,图中黄色为bug,显示输入数组长度大于此表中列数,请问

c#设计的表头如图,往表里填数据的程序如图,图中黄色为bug,显示输入数组长度大于此表中列数,请问,第1张

应该是先声明一个DataRow对象,然后再给DataRow对象赋值,最后往DataTable里添加DataRow

代码如下:

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不成熟的地方,后面的版本明显已经完善了内存的释放时间机制。

酒后胡言,大神勿喷啊


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11132175.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存