你做一下检测,再进行赋值运算才行。另外,你手动申请的内存,应该要记得释放。
虽然你的电脑,内存是8G,但实际上,这8G你开机之后就不可能有8G了,所以实际上你最多是分配不到8G这么大的空间的。
#include <math.h>
#include <malloc.h>
#include "stdlib.h"
main()
{
long long i,imax
imax=pow(2,30)//2的30次方
float *P=(float *)malloc(imax * sizeof(float))//sizeof(float)应该是4,所以你分配了2的32次方比特的空间,大约是4*1024*1024*1024,就是4G空间,运行这个程序前你最好去看下你的电脑,系统内存是不是还有4G
if(P==0)
{
printf("系统内存不足,请减小你需要申请的内存空间")
exit(0)
}
for(i=0i<imaxi++)
P[i]=0
free(P)
getch()
}
8G 空间就是2的33次方比特这么大的空间。
电脑是win7 64位, Dev-Cpp安装路径是C:\Dev-Cpp,此目录下有 MinGW64,即windows版GCC的根目录。下载SDL
打开 http://www.libsdl.org/download-2.0.php
找到开发库Windows下 SDL2-2.0.3-mingw.tar.gz 点击下载。
也可以直接点击 http://www.libsdl.org/release/SDL2-devel-2.0.3-mingw.tar.gz
因为前面Dev-Cpp中装是MinGW64,所以解压后进入SDL开发库中的 x86_64-w64-mingw32目录
将 F:\Downloads\SDL2-2.0.3\x86_64-w64-mingw32\include\SDL2 下所有头文件复制到 C:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include;
再将 F:\Downloads\SDL2-2.0.3\x86_64-w64-mingw32\lib 所有 lib* 文件复制到 C:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib
==========================================================================================
接下来创建一个测试程序。
在Dev-Cpp中创建一个C项目, 添加main.c
[cpp] view plaincopy
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
int main(int argc, char * argv[])
{
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)
{
fprintf(stderr, "SDL_Init() failed")
exit(-1)
}
printf("SDL_init() success")
SDL_Quit()
return 0
}
配置项目需要链接的库 -lmingw32 -lSDL2main -lSDL2
完了可以正常编译,但是运行失败,这是由于运行时找不SDL2.dll。
把 F:\Downloads\SDL2-2.0.3\x86_64-w64-mingw32\bin\SDL2.dll 复制到 C:\Windows\System32\目录下,或者是把这个SDL2.dll复制到 编译生成的exe文件所在目录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)