用C语言向内存中用fwrite()函数写入大量的data占满固定的bandwidth。

作者&投稿:丛相 (若有异议请与网页底部的电邮联系)
怎么用C语言写个循环来占满4G内存?~

#include
#include
# include
void main()
{
int *a;
int b=1024*1024*sizeof(int);
int i=0;
while(1) {
a=(int *)malloc(b);
memset(a, i++, sizeof(b)); //评论说扛住了,估计是编译器优化了,只好上大杀器了

}

卡死你。。。

一次不能写太多啊,你要考虑系统内存满了怎么办?那就自然崩溃了。 估计你的写法存在问题!

#include <stdio.h>
struct trace_rec
{
char rw;
long unsigned int mem_addr;//4字节 
long long unsigned int delta_cycle;//8字节 
};                                      //声明一个 组织结构 
int main()
{
struct trace_rec rec;             //声明rec这个变量具有上面定义的组织结构 
int i=0;
FILE *trace=fopen("trace_core0","rb");  // 用二进制模式打开 trace_core0 文件,并定位指针 trace 
while(1)
{
if(!fread(&rec,sizeof(struct trace_rec),1,trace))  //从trace(这里是文件trace_core0)中读取1个数据块的数据,存放在 rec 中。这个数据块包括 rw,mem_addr,delta_cycle的信息 
   break;
//printf("%lld %ld
",rec.delta_cycle,rec.mem_addr);
i++;
}
fclose(trace);

trace=fopen("trace_core1","rb");
while(1)
{
if(!fread(&rec,sizeof(struct trace_rec),1,trace))
   break;
//printf("%lld %ld
",rec.delta_cycle,rec.mem_addr);
i++;
}
fclose(trace);

trace=fopen("trace_core2","rb");
while(1)
{
if(!fread(&rec,sizeof(struct trace_rec),1,trace))
   break;
//printf("%lld %ld
",rec.delta_cycle,rec.mem_addr);
i++;
}
fclose(trace);

trace=fopen("trace_core3","rb");
while(1)
{
if(!fread(&rec,sizeof(struct trace_rec),1,trace))
   break;
//printf("%lld %ld
",rec.delta_cycle,rec.mem_addr);
i++;
}
fclose(trace);
printf("%d
",i);
fclose(trace);
return 0;

}



C语言函数调用问题(选择题)
A是先取函数f返回的内存单元(参数是&i即i的地址)中存储的值,并作更改(改为6)B项 i+6 是算术表达式,不能直接取地址,必须使用变量保存才能取地址 C项 是定义一个指向整型的指针p,并赋值为函数f的返回值(该函数返回一个指针,也就是内存地址)D项 直接以&i为参数执行函数f,返回值不起任何...

C语言里如何使用free()释放字符串内存
由于free和malloc配对使用,malloc的时候,大小已经告诉系统了。free的时候,系统会比对一下这个地址,是不是malloc申请的,如果不是,不给释放 如果是的话,系统就知道要释放多大内存,因为malloc的时候,系统有记录的。当然了,申请的地址,也记录了的,否则,就无法比对了。include <stdio.h> include <...

c语言中, double、 float、% f、% lf有什么区别
1.双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\\n",x);2.short 占用内存空间2个字节,短整型数据用%d输出 例如:printf("%d\\n",a);例:include <stdio.h> int main(){double x;short...

c语言里的g是什么意思?
输出格式为f格式或e格式,系统根据数据占宽度m大小,自动选择占宽度较小的某种格式输出,g格式符不输出小数点后无意义的零。例:main(){float x=654.321;printf("%f,%e,%g",x,x,x);}打印输出:654.320984,6.543210e+002,654.321(其中输出的654.320984是因为在内存中的存储误差引起的)。

关于C语言变量和数组的声明问题
下面是C语言内存分配特性,可以参考。1、C中内存分为四个区 栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数执行完后由编译器自动释放。堆:用来存放由动态分配函数(如malloc)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free释放。如果忘记用free释放,会导致所...

c语言中“%.0f”是什么意思?
.0f 是输出 float 型或 double 型数据,按定点格式,小数点以下占0位。格式输出一个浮点数,去掉小数点后面的数。%.0f的0代表小数点后面几位,%.2f就是小数点后面2位。输出浮点数的整数部分,不输出小数点和小数点以下部分。小数部分 4 舍 5 入。

在C语言中如果已经知道了一个数据的内存地址,怎样直接从内存中读取出...
{ int a=123,b=1234567;int adda=&a,addb=&b;int *m,*n;m=adda;n=addb;\/\/printf("*m=%d\\t,*n=%d\\n",*m,*n); \/\/这里不用指针变量直接输出int数据 printf("m=%d\\t,n=%d\\n",a,b);return 0;} 这里的m和n已经和a,b没有任何逻辑联系了,他们只是表示两个内存段的数据...

C语言中%f8.6是什么意思??
-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。⑦f格式:用来输出...

请问C语言中的buf一般指什么
buf是英文buffer的缩写,意思是缓冲区, 它本质上就是一段存储数据的内存。1、在C语言编程中一般用数组来表示一个缓冲区。如下:1 2 3 char buf[256] = {0}; \/\/定义一个数组作为缓冲区。scanf("%s", buf); \/\/向缓冲区中输入数据 printf("%s", buf); \/\/输出缓冲区的内容 2、C...

c语言中malloc函数的用法
malloc函数是C语言中的一种动态内存分配函数。它可以在程序运行时动态地分配内存空间,使程序具有更大的灵活性和可扩展性。使用malloc函数可以在程序运行时动态地分配内存空间。例如,下面的代码片段可以申请一个大小为10个整形变量大小(即40个字节)的连续内存空间,并将其首地址赋给指针变量p。在程序运行...

永仁县17099118689: 用C语言向内存中用fwrite()函数写入大量的data占满固定的bandwidth. -
汲叙必纳: #include struct trace_rec { char rw; long unsigned int mem_addr;//4字节 long long unsigned int delta_cycle;//8字节 }; //声明一个 组织结构 int main() { struct trace_rec rec; //声明rec这个变量具有上面定义的组织结构 int i=0; FILE *trace=fopen("...

永仁县17099118689: c语言,实现以写模式在磁盘上新建一个文件,再用fwrite函数往文件中写入一些数据,最后关闭文件. -
汲叙必纳: c语言,把数据存在txt文件里,需要使用fopen函数以写文件的方式打开文件.然后可以使用fprintf,fputc,fputs,fwrite等函数,把相应类型的数据写入文件.最后,写入完成后使用fclose函数关闭文件. 下面的C语言程序源程序展示了合并A.txt和B.txt...

永仁县17099118689: 高分请c语言高手帮我编写一段用fwrite保存文件和读取保存的二进制文件! -
汲叙必纳: void savetofile(const char* szFileName, const struct student* st, int n) { FILE *fp; int i; if((fp=fopen(szFileName,"wb"))==NULL) { printf("cant open the file"); return; } for(i=0;i<n;i++) { if(fwrite(&st[i],sizeof(struct student),1,fp)!=1) printf("file write ...

永仁县17099118689: c语言修该文件中某个数据 -
汲叙必纳: 1.你读到的确实在内存中2.打开的时候必须是"rb+"3.写入后再关闭,然后再打开4. while(!feof(cfptr))这个函数会多读一次5.写入用fwrite()

永仁县17099118689: fread、fwrite怎么使用? -
汲叙必纳: (2).文件随机读写函数 int fread(void *ptr,int size,int nitems,FILE *stream); int fwrite(void *ptr,int size,int nitems,FILE *stream); fread()函数从流指针指定的文件中读取nitems个数据项,每个数据项的长度为size个字节,读取的nitems数据项存入由...

永仁县17099118689: c语言fread函数的用法就是我用fwrite把数据写进文件里,
汲叙必纳: 首先你要确定你fwrite写入的文件格式,才能用相应的fread将数据读出来 其次,C本身没有文件搜索功能的,它必须用fread逐条读入到内存,然后一条条比较,才能找到你要的数据

永仁县17099118689: C语言编程问题 -
汲叙必纳: 你这问题问的前言不搭后语!一、fscanf()是从文件中读数据,怎么能输出到屏幕呢?二、fprintf()是输出数据到文件中,而且采用的是明码数据输出,所以看到的是正常的 三、用fwrite()写文件,是将内存数据写到文件里,内存中存储的信息是二进制的,只有字符是明码,其它的都是二进制数据,再加上内存中的垃圾,所以你看起来就是乱码了.四、fread()之后,你应该按结构体成员逐一输出,用printf(),就象你用fprintf()那样的格式输出就会是正常的了. 你的输出函数中,只有read没有输出啊!

永仁县17099118689: 请问下C语言中怎么用fwrite函数来写入结构体数组中的数据?请举个例子 谢谢!! -
汲叙必纳: struct MyStruct s; FILE * fp; ...... fwrite(&s, sizeof(s), 1, fp);

永仁县17099118689: c语言怎么将数据写入文件 -
汲叙必纳: 可以使用C语言中的文件操作函数,将数据写入文件.具体如下 一、打开文件. 使用fopen函数.格式为: FILE *fopen(const char *name, const char * mode); 其中name为要写入的文件名,mode为格式字符.要写入文件,mode可以是: 1、...

永仁县17099118689: 用函数fwrite写文件时,怎样在换行时输入回车 -
汲叙必纳: 直接输入"\r\n"即可.fwrite是C语言函数,指向文件写入一个数据块.功能:C语言函数,向文件写入一个数据块用法:size_tfwrite(constvoid*buffer,size_tsize,size_tcount,FILE*stream);注意:这个函数以二进制形式对文件进行操作

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网