★如此简单的“char *tempin = new char[100];”造成 NullReferenceException错误,狂晕!重分!!!

edoch 2004-01-09 10:54:39
这是我生成的vc.net类库程序,生产check.dll
/*check.cpp */
#include "stdafx.h"
#include "check.h"
#include <memory.h>
#include <stdlib.h>
#include <string.h>
#using < mscorlib.dll >
using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;

bool check::Class1::verify(String *strIn, long slen)
{
char *tempin = new char[slen+1];//#######
.............
}

然后我有生产了一个ASP.NET web应用程序(c#),在其中调用了check::Class1::verify(String *strIn, long slen),但运行此web程序时在#######处出错:
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
百思不得其解,兄弟们帮帮忙,指点小弟一二。谢谢!!!
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
RainCome 2004-01-09
  • 打赏
  • 举报
回复
同意 sxxny
sxxny 2004-01-09
  • 打赏
  • 举报
回复
你这写的不是managed代码, managed代码要是允许你这样搞的话那还叫什么托管,
不就是你自己在管了吗?
应该是:
bool vc_lib::Class1::verify(String *strIn, long slen)
{

Char tempin[] = new Char[slen];
return true;
}
一般来是托管代码中是不能显式操作指针的.
如果你以前用的VC, 那么你在.net中写非托管c++应该没有什么问题, 因为几乎没有什么区别, 可是如果你要写托管c++程序的话, 你还是得话点时间去了解一下.net框架的结构先
edoch 2004-01-09
  • 打赏
  • 举报
回复
对,偶用的是managed c++,放在这里是想借下这里的人气.
刚开始用.net啊,问题一大堆,和以前的6.0比边了很多啊!
edoch 2004-01-09
  • 打赏
  • 举报
回复
去掉new怎么分配内存啊
CathyPing 2004-01-09
  • 打赏
  • 举报
回复
你将new去掉试试看,应该可以了
loverP 2004-01-09
  • 打赏
  • 举报
回复
看看传参那一块吧,不一定就是这一具有问题。
烤火的鱼 2004-01-09
  • 打赏
  • 举报
回复
这里是C#,你用的好象是VC吧
edoch 2004-01-09
  • 打赏
  • 举报
回复
哎,现在我越来越有体会,CSDN的高手越来越少了!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧