【发布时间】:2019-06-11 04:15:51
【问题描述】:
每当运行以下程序时,它都会因这个奇怪的异常而崩溃:
“dfun.exe 中 0x00B31028 处引发异常:0xC0000005:访问冲突读取位置 0x00000000。”
我正在使用 visuald 和 dmd 在 Visual Studio 中进行编译。不确定要提供更多信息,请问...
module dfun;
import std.stdio;
class Event(Args...)
{
private void function(Args)[] _funcArray;
public this()
{
}
public void addHandler(void function(Args) handler)
{
_funcArray.length++;
_funcArray[$ - 1] = handler;
}
public void opCall(Args args)
{
foreach(func; _funcArray)
{
func(args);
}
}
}
void foo(int a, char c)
{
writeln(a, c);
}
int main()
{
Event!(int, char) doIt;
doIt.addHandler(&foo);
doIt(5, 'a');
readln();
return 0;
}
但如果代码改成这样,基本功能不变:
module dfun;
import std.stdio;
void foo(int a, char c)
{
writeln(a, c);
}
int main()
{
//Event!(int, char) doIt;
//doIt.addHandler(&foo);
void function(int, char)[] func;
func.length++;
func[0] = &foo;
func[0](5, 'a');
readln();
return 0;
}
它工作得很好。 课间休息什么?
【问题讨论】:
标签: visual-studio exception d access-violation dmd