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 ...
随机推荐
- CodeForces 396C On Changing Tree
On Changing Tree Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...
- SQL SERVER高级知识积累
什么叫做高可用服务器? 高可用服务器简单来理解就是不宕机的服务器 什么叫走服务器的自动化灾备? 自动灾备的意思就是,让从服务器自动变成主服务器 sql server的聚合是什么? 事务会引起性能下降, ...
- CentOS 6.9使用sudo时出现:“...不在 sudoers 文件中,此事将被报告”的问题解决
在终端切换root账号登录 su 修改/etc/sudoers文件 visudo 找到:root ALL=(ALL) ALL,修改成自己的账号: 保存即可,按Exc,输入”:wq!“,回车.
- Kafka的存储机制以及可靠性
一.kafka的存储机制 kafka通过topic来分主题存放数据,主题内有分区,分区可以有多个副本,分区的内部还细分为若干个segment. 所谓的分区其实就是在kafka对应存储目录下创建的文件夹 ...
- 【cl】本地安装maven的jar包报错Artifact is already in the local repository
原因是我直接把jar包放在了仓库里面 解决办法:将jar办放在不是仓库路径位置,在进行install就okle
- pod install fatal: unable to access 'https://chromium.googlesource.com/webm/libwebp/'
1. 前往文件夹 /用户/aki/.cocoapods/repos/master/1/9/2/libwebp 2.编辑libwebp.podspec.json 将source git 改为 https ...
- [源码管理] Microsoft Visual SourceSafe 2005 下载与配置
一.VSS2005的下载地址是:百度搜索关键字:vss, 二.配置Microsoft Visual SourceSafe 2005的Internet访问 VSS2005发布以后,早就听说可以支持Int ...
- postgresql 备份(pg_dump,pg_restore)
PG提供物理备份和逻辑备份(本篇主要讲逻辑备份)物理备份:WAL热备份逻辑备份:pg_dump,pg_dumpall,恢复时pg_restore 查看帮助命令: pg_dump --help 跟MyS ...
- SQL server存储过程学习
由于之前使用 Linq to Sql来操作数据库,对于数据库的存储过程.函数等比较薄弱.乘着自己闲着的时候,就百度自学了一点存储过程,以防以后要用. 基础通俗易懂的存储过程通过 存储过程学习 ,然后自 ...
- lua闭包函数
function createCountdownTimer(second) local ms = second * local function countDown() ms = ms - retur ...