mmap,malloc分配随机内存
随机数1G
#cat malloc_rand_1g.c
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand, system */
#include <unistd.h>
#include <memory.h>
int main ()
{
int size;
int n;
char * buffer;
size=1024*1024*1024; //1G
printf ("输入字符串的长度:%d bytes\n",size);
//scanf ("%d", &i);
buffer = (char*)malloc(sizeof(char) * size); // 字符串最后包含 \0
if(buffer==NULL) exit(1); // 判断是否分配成功
memset(buffer,'a',sizeof(char) * size);
printf("total bytes:%d bytes \n",sizeof(char) * size);
// 随机生成字符串
for(n=0; n<size; n++){
buffer[n] = rand()%26+'a';
// printf("%c",buffer[n]);
}
printf("\n");
buffer[size+1]='\0';
// printf ("随机生成的字符串为:%s\n",buffer);
printf("wait about 1800s....\n");
sleep(1800);
free(buffer); // 释放内存空间
printf("clean up....\n");
return 0;
}
memset(a)
#cat malloc_a_1g.c
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand, system */
#include <unistd.h>
#include <memory.h>
int main ()
{
int size;
int n;
char * buffer;
size=1024*1024*1024; //1G
printf ("输入字符串的长度:%d bytes\n",size);
//scanf ("%d", &i);
buffer = (char*)malloc(sizeof(char) * size); // 字符串最后包含 \0
if(buffer==NULL) exit(1); // 判断是否分配成功
memset(buffer,'a',sizeof(char) * size);
printf("total bytes:%d bytes \n",sizeof(char) * size);
// 随机生成字符串
for(n=0; n<size; n++){
buffer[n] = 'a';
// printf("%c",buffer[n]);
}
printf("\n");
buffer[size+1]='\0';
// printf ("随机生成的字符串为:%s\n",buffer);
printf("wait about 1800s....\n");
sleep(1800);
free(buffer); // 释放内存空间
printf("clean up....\n");
return 0;
}
mmap
#cat mmap_1g.c
#include<stdio.h>
#include<sys/mman.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 1024*1024*1024
#define GB 1
int main(int argc,char* argv[]) {
char *p;
int i=1;
for (i=1;i<=GB;i++) {
if ((p = (char *)mmap(NULL,SIZE, PROT_READ |
PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0)) == (void *)-1) {
perror("mmap");
}
memset(p,'c',SIZE);
printf("Get %d GB...\n",i);
}
sleep(3000);
return 0;
}
mmap,malloc分配随机内存的更多相关文章
- malloc分配的内存空间是连续的吗
1.linux内核管理内存空间的分配,所有程序对内存空间的申请和其他操作,最终都会交给内核来管理. 2.linux实现的是“虚拟内存系统”,对用户而言,所有内存都是虚拟的,也就是说程序并不是直接运行在 ...
- 关于被malloc分配内存的指针
例如创建了一个链表指针p并为其malloc()分配了内存,那么这个指针指向的地方其实是有数据的. 你可以把p->data打印出来,会发现是一个随机值 因为只是分配内存而没有指定data的值,所以 ...
- malloc分配内存的结构
在C/C++,我们都可以使用malloc进行分配大小,单位是字节. malloc实际分配的内存大小和传入的参数其实是不同的. 实际分配的内存大小>传入的参数大小. malloc分配的内存 ...
- Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】
转自:http://blog.csdn.net/kobbee9/article/details/7397010 brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的: ...
- 堆/栈的比较 以及 malloc/new动态内存的开辟
堆与栈的比较:1.申请方式(1)栈(satck):由系统自动分配.(2)堆(heap):需程序员自己申请(c:调用malloc,realloc,calloc申请 free 来释放),并指明大小,并由程 ...
- c malloc分配内存
php中的内存分配有用类似emalloc这样的函数,emalloc实际上是C语言中的malloc的一层封装,php启动后,会向OS申请一块内存,可以理解为内存池,以后的php分配内存都是在这块内存池中 ...
- malloc分配到一块内存,读写操作时却发生segmentation falt的奇怪问题。
期初现象:malloc一块内存,读写操作时发生segmentation falt.一般来讲malloc倘若失败应该抛出异常,所以malloc返回一个指针后,这个指针应该都是可用的,况且是进行读操作. ...
- C++ 内存、new与malloc分配内存区别?
一关于内存 1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建. ...
- malloc(0)分配多少内存?(译文)
原文地址:http://prog21.dadgum.com/179.html 在大多的系统中,这个C的小程序将会吸收全部空闲的内存. ){ ); } 在我们聊malloc(0)之前,让我们看看mall ...
随机推荐
- 洛谷 P2813 母舰
题目描述 在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负.一艘母舰的攻击力是普通的MA(Mobile Armor)无法比较的. 对于一艘母舰而言,它是由若干个攻击系统和若干个防御系统组 ...
- HDU4565 So Easy!
/* HDU4565 So Easy! http://acm.hdu.edu.cn/showproblem.php?pid=4565 数论 快速幂 矩阵快速幂 题意:求[(a+sqrt(b))^n ] ...
- 洛谷 P2633 Count on a tree
P2633 Count on a tree 题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中last ...
- Spring Boot奇怪的问题:The Bean Validation API is on the classpath but no implementation could be found
注意:此方法不能解决在项目上用了Hibernate Validator的问题. 错误如下: *************************** APPLICATION FAILED TO STAR ...
- 为什么用clojure作为storm 的主要开发语言
Why you choose Clojure as the development language of Storm? Could you talk about your long practica ...
- 9517 Link Link Look
9517 Link Link Look 该题有题解 时间限制:2000MS 内存限制:65535K提交次数:67 通过次数:18 题型: 编程题 语言: G++;GCC Description ...
- 链接提交-js代码推送进化版
百度站长平台提供链接索引的自动提交JS脚本已经有一段时日了.用百度自己的话讲:JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用.安装代码的页面在任意平台(浏览器.微信.微博 ...
- GammaRay 是一个允许你查看 Qt 应用程序甚至在某种程度上修改它的独特应用,可谓是 Debugger 的良好补充
GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some ...
- 国外物联网平台初探(一) ——亚马逊AWS IoT
平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AW ...
- 2017-3-9 leetcode 283 287 289
今天操作系统课,没能安心睡懒觉23333,妹抖龙更新,可惜感觉水分不少....怀念追RE0的感觉 =================================================== ...