我想比较元编程和c ++ 0x中constexpr的使用.然后我在两个模型中写了一个fib函数.当我使用元编程模型时,答案打印速度非常快,因为它是在编译时计算的.但是当我使用constexpr函数时,它会在运行时计算值,而不是在编译时.我使用g ++(gcc)4.8.可以帮助我吗?
#include <iostream>
using namespace std;
#define NUM 42
template <unsigned int N>
struct Fibonacci {
enum { value = Fibonacci<N - 1>::value + Fibonacci<N - 2>::value };
};
template <>
struct Fibonacci<1> {
enum { value = 1 };
};
template <>
struct Fibonacci<0> {
enum { value = 1 };
};
constexpr unsigned int fib(unsigned int n)
{
return (n > 1 ? fib(n-1) + fib(n-2) : 1 );
}
int main()
{
cout << …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用VirtualAllocEx().当我将dwSize
(第三个参数)设置为大于约63 MB的数字时,它会导致在我查看时生成错误代码487 GetLastError()
.但是,它适用于较小的尺寸,如4MB.
这是我的代码的一部分:
VirtualAllocEx(peProcessInformation.hProcess,
(LPVOID)(INH.OptionalHeader.ImageBase),
dwImageSize,
MEM_RESERVE | MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
Run Code Online (Sandbox Code Playgroud)
在我使用4MB EXE文件的情况下,LPVOID返回值是0x00400000
,但在其他情况下(20MB或更大的文件)它返回0x00000000
.
参数是否有最大值dwSize
?
我的问题是否有其他解决方案,例如另一个功能?