我正在运行此代码,在64位vc ++ 2005上编译,在Windows Server 2008 R2上使用32GB.for循环中存在访问冲突.
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double *x = new double[536870912];
cout << "memory allocated" << endl;
for(long int i = 0; i < 536870912; i++)
{
cout << i << endl;
x[i] = 0;
}
delete [] x;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果新双[536870912]中没有异常,为什么在对特定阵列位置进行赋值时会出现访问冲突?
值得一提的另一点是,该程序在另一台计算机上成功测试.
我正在阅读有关Haskell的Graham Hutton的书,并且不要一口气地进行练习。练习内容如下:
给定以下类型表达式
data Expr a = Var a | Val Int | Add (Expr a) (Expr a) deriving Show
Run Code Online (Sandbox Code Playgroud)
包含某些类型a的变量,展示了如何使这种类型成为Functor,Applicative和Monad类的实例。借助示例,说明>>=该类型的运算符的作用。
我在定义<*>Applicative运算符时遇到了问题。的类型<*>是:
(<*>) :: Expr (a -> b) -> Expr a -> Expr b
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么用(Val n) <*> mx,因为从理论上讲我需要提供一个Expr b,但是我所拥有的只是一个,Expr a并且没有转换(a -> b)的函数。
我也不知道该怎么办(Add l r) <*> mx。
这是我的实现。
instance Functor Expr where
--fmap :: (a -> b) -> Expr a -> Expr b
fmap …Run Code Online (Sandbox Code Playgroud)