当前位置: 首页 > wzjs >正文

做网站用什么语言简单百度推广方案

做网站用什么语言简单,百度推广方案,有没有教给做宝宝衣服的网站,网站开发需要什么人内存管理 目录 内存管理 一.简单的内存分配 代码功能概述 代码流程图 变量声明 动态内存分配 内存分配错误检查 向内存写入字符串 设置退出状态并退出程序 二.请求全部的物理内存 代码功能概述 变量声明 三..可用内存 四.滥用内存 1.代码功能(预期 …

内存管理

目录

内存管理

一.简单的内存分配

代码功能概述

代码流程图

变量声明

动态内存分配

内存分配错误检查

向内存写入字符串

设置退出状态并退出程序

二.请求全部的物理内存

代码功能概述

变量声明

三..可用内存

四.滥用内存

1.代码功能(预期 vs 实际)


一.简单的内存分配

代码功能概述
  1. 分配 1MB 内存:使用 malloc 动态申请一块 1MB 大小的内存空间。

  2. 写入字符串:通过 sprintf 向分配的内存中写入 "Hello World\n"。

  3. 输出内容:使用 printf 打印内存中的字符串。

  4. 错误处理:检查内存分配是否成功,根据结果设置程序退出状态。

代码流程图
开始
├─ 分配 1MB 内存
│  ├─ 成功 → 写入 "Hello World\n" → 打印内容 → 退出状态设为成功
│  └─ 失败 → 跳过操作,保持退出状态为失败
└─ 退出程序(返回 exit_code)
#include <unistd.h>  // 包含 Unix 系统相关函数(此处未实际使用,可能为冗余包含)
#include <stdlib.h>  // 包含内存分配(malloc)、程序退出(exit)等函数
#include <stdio.h>   // 包含输入输出函数(printf、sprintf)#define A_MEGABYTE (1024 * 1024)  //宏定义,1MBint main() {char *some_memory;       // 用于存储动态分配的内存指针int  megabyte = A_MEGABYTE;  // 内存大小(1MB)int exit_code = EXIT_FAILURE;  // 程序退出状态(初始为失败状态)some_memory = (char *)malloc(megabyte);if (some_memory != NULL) {sprintf(some_memory, "Hello World\n");printf("%s", some_memory);exit_code = EXIT_SUCCESS;}exit(exit_code);
}
变量声明
  • some_memory:指向 char 类型的指针,用于接收 malloc 返回的内存地址。

  • megabyte:将宏定义的值赋给变量,方便后续使用(实际可直接用 A_MEGABYTE)。

  • exit_code:使用 EXIT_FAILURE(通常为 1)初始化,表示程序默认以失败状态退出,后续根据内存分配结果修改。

动态内存分配
  • malloc 函数:分配 megabyte 字节的内存空间,返回指向该内存起始地址的指针(void),需强制类型转换为 char

  • 返回值:若分配成功,返回非 NULL 指针;若失败(如内存不足),返回 NULL。

内存分配错误检查
  • 必须检查 malloc 的返回值!若忽略此步骤,后续对 NULL 指针的解引用会导致程序崩溃(未定义行为)。

  • 若分配失败,直接跳过 if 代码块,保持 exit_code = EXIT_FAILURE,程序以失败状态退出。

向内存写入字符串
sprintf(some_memory, "Hello World\n");
  • sprintf 函数:将格式化字符串写入指定内存缓冲区(而非标准输出)。

  • 此处作用:将 "Hello World\n" 写入 some_memory 指向的内存起始位置。

  • 注意:虽然分配了 1MB 内存,但字符串仅占用 12 字节("Hello World\n" 共 11 个字符 + 1 个 \0 终止符),剩余内存未使用(但仍被分配)。

  • sprintf 会自动添加 \0

设置退出状态并退出程序
exit_code = EXIT_SUCCESS;  // 若内存分配和写入成功,设置退出状态为成功(0)
exit(exit_code);           // 终止程序,返回状态码给操作系统
  • EXIT_SUCCESSstdlib.h 定义的宏(通常为 0),表示程序正常结束。

  • exit 函数会清理资源(如缓冲区),并将 exit_code 返回给父进程(如 shell)

二.请求全部的物理内存

代码功能概述
  1. 目标:循环分配 1MB 大小的内存块,直到累计分配的内存达到 PHY_MEM_MEGS * 2 MB(当前配置为 256MB)。

  2. 操作:每次分配成功后,向内存块写入固定字符串 Hello World,并打印已分配的内存总量。

  3. 终止条件:当内存分配失败(如系统内存不足)或达到目标总量时终止程序。

#include <unistd.h>  // 包含 Unix 系统相关函数(此处未实际使用,可能为冗余)
#include <stdlib.h>  // 包含内存分配(malloc)、程序退出(exit)等函数
#include <stdio.h>   // 包含输入输出函数(printf、sprintf)#define A_MEGABYTE (1024 * 1024)       // 定义 1MB 大小(1024×1024 字节)
#define PHY_MEM_MEGS    128  // 预设的物理内存大小(单位:MB),实际分配其 2 倍(256MB)int main()
{char *some_memory;          // 存储每次分配的内存块指针size_t  size_to_allocate = A_MEGABYTE;  // 每次分配的大小(1MB)int  megs_obtained = 0;     // 已分配的内存总量(单位:MB)while (megs_obtained < (PHY_MEM_MEGS * 2)) {//malloc 函数:分配 size_to_allocate 字节的内存空间,返回指向该内存起始地址的指针some_memory = (char *)malloc(size_to_allocate);  // 分配 1MB 内存if (some_memory != NULL) {                       // 分配成功megs_obtained++;                             // 累计块数 +1sprintf(some_memory, "Hello World");          // 向内存块写入固定字符串printf("%s - now allocated %d Megabytes\n", some_memory, megs_obtained);} else {                                         // 分配失败(如内存不足)exit(EXIT_FAILURE);                           // 终止程序,返回错误状态}
}exit(EXIT_SUCCESS);
}
变量声明
char *some_memory;          // 存储每次分配的内存块指针
size_t  size_to_allocate = A_MEGABYTE;  // 每次分配的大小(1MB)
int  megs_obtained = 0;     // 已分配的内存总量(单位:MB)
  • size_to_allocate 使用 size_t 类型(无符号整数),符合 malloc 参数要求,避免溢出风险。

  • megs_obtained 记录累计分配的 1MB 块数,达到 PHY_MEM_MEGS * 2 时停止。

内存分配循环

关键逻辑:

  • 循环条件:(因 ,2 倍即 256MB)。megs_obtained < 256PHY_MEM_MEGS=128

  • 单次分配:

   malloc(size_to_allocate) 申请 1MB 内存,返回指向该内存的指针。

若返回 ,说明内存分配失败(如系统剩余内存不足),程序直接退出。NULL

  • 成功处理:

    megs_obtained++:累计已分配的 1MB 块数。

    sprintf:向分配的内存块写入字符串 (仅占用 12 字节,剩余 1MB-12 字节未使用)。

    printf:打印内存块中的字符串和当前已分配的总内存(以 MB 为单位)。

三..可用内存

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>#define ONE_K (1024)int main() {char *some_memory;       // 存储单次分配的内存块指针int  size_to_allocate = ONE_K;  // 每次分配的大小:1KBint  megs_obtained = 0;    // 已分配的内存总量(单位:MB)int  ks_obtained = 0;     // 内层循环中已分配的 1KB 块数while (1) {  // 无限循环,直到手动终止或内存不足for (ks_obtained = 0; ks_obtained < 1024; ks_obtained++) {// 分配 1KB 内存some_memory = (char *)malloc(size_to_allocate);if (some_memory == NULL) exit(EXIT_FAILURE);  // 分配失败则退出sprintf(some_memory, "Hello World");  // 向内存块写入固定字符串(12 字节)}megs_obtained++;  // 累计分配 1MBprintf("Now allocated %d Megabytes\n", megs_obtained);  // 打印已分配的 MB 数
}exit(EXIT_SUCCESS);
}

四.滥用内存

1.代码功能(预期 vs 实际)

预期功能(推测):

 分配 1KB 内存,逐个字节写入 (空字符),理论上初始化内存区域为全零。'\0'
  • 实际行为:

    无限循环:没有终止条件,指针会超出分配的内存范围,导致 未定义行为(如缓冲区溢出、段错误)。

  • #include <unistd.h>
    #include <stdlib.h>#define ONE_K (1024)int main() {//内存分配char *some_memory;char *scan_ptr;some_memory = (char *)malloc(ONE_K);if (some_memory == NULL) exit(EXIT_FAILURE);scan_ptr = some_memory;while(1) {*scan_ptr = '\0';scan_ptr++;}exit(EXIT_SUCCESS);
    }

http://www.dtcms.com/wzjs/247396.html

相关文章:

  • 哪些网站做的比较好温州高端网站建设
  • 形容网站做的好微信营销案例
  • 建设包包网站的目的seort什么意思
  • 网站充值提现公司账务怎么做51外链代发网
  • 效果图哪个网站好今日热搜新闻头条
  • 有什么可以做任务赚钱的网站软文营销推广
  • 网站建设中的时尚资讯seol英文啥意思
  • 安徽网站开发培训价格夸克搜索入口
  • 为什么在百度搜不到我的网站全自动推广引流软件
  • 仿站工具下载后咋做网站百度seo排名推广
  • 网页图片高清郑州外语网站建站优化
  • 温州市住建委住宅建设网站中国搜索
  • 手机网站建设的价格所有关键词
  • 郑州富士康详细地址上海做网站优化
  • 成都网站建设公司浅谈百度小说app
  • 网站怎么做全屏的网络营销的整体概念
  • 秦皇岛网站推广百度浏览器打开
  • 档案安全网站安全建设免费b2b
  • 淘宝直接怎么做网站百度服务中心电话
  • 做景观素材有哪几个网站推广网络推广平台
  • 企业建立自己网站主要方式技能培训网
  • 商洛网站建设哪家好网络推广员是干嘛的
  • diango做的网站怎么用手机创建网站教程
  • 国外推广国内网站网络营销公司热线电话
  • 做拍卖的网站有哪些亚马逊关键词搜索器
  • 视频网站开发的论文百度首页 百度一下
  • .org做商业网站网站关键词如何优化上首页
  • cos wordpress郑州seo排名哪有
  • 常见b2c电商平台有哪些关键词优化排名用哪些软件比较好
  • 页面设计合同上海外包seo