这是我的代码的一部分:
extern "C" REGISTRATION_API int extreme(char* lKey)
{
string s1;
char *p=NULL;
try
{
ifstream myfile ("extreme.txt");
int i=0;
if (myfile.is_open())
{
while (getline(myfile,s1))
{
switch (i)
{
case 1:
strcpy(p,s1.c_str());
lKey=p;
break;
//continue here
}
}
}
}
现在,当我从外部应用程序调用此函数时,出现此错误:
访问冲突异常:
尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
问题是这样的:
lKey=p;
我怎样才能分配lKey
to p
?
您需要预先分配传递给的内存strcpy
。 IE。 Ap = new char[s1.length()+1];
会做到这一点(+1 表示终止 0 字符)。然而,混合起来并不是一个好主意std::string
和 C 字符串例程没有充分的理由。更好地坚持std::string
,这将为您省去很多麻烦。
Also lKey=p
也不起作用——它只是复制本地地址p
到局部变量中lKey
。呼叫者甚至不会看到任何差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)