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

上海专业做网站公司地址前端开发面试题

上海专业做网站公司地址,前端开发面试题,网站源码怎么下载,好看的网站首页设计博主介绍#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章#xff0c;首发gzh#xff0c;见文末#x1f447;#x1f… 博主介绍程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章首发gzh见文末记得订阅专栏以防走丢 C基础系列专栏 C语言基础系列 C大佬养成攻略 在C编程中内存管理是一个至关重要的概念。 要深入理解内存管理我们肯定要了解堆内存和栈内存的基本概念、区别以及它们的动态分配和释放方法。还需要深入理解相关内存分配函数malloc、calloc、realloc的用法。 基本概念理解 栈内存 栈内存是由编译器自动管理的内存区域用于存储局部变量、函数参数和返回地址等。栈内存的分配和释放是自动进行的 当函数被调用时局部变量和参数会被压入栈中当函数返回时这些局部变量和参数会被弹出栈并释放。 栈内存具有快速分配和释放的特点但其大小是固定的一般也就8M左右不能动态调整。 堆内存 堆内存是由程序员手动管理的内存区域用于动态分配内存。 你通过malloc、calloc、realloc等函数可以在堆上分配内存通过free函数释放内存。 堆内存的大小不固定可以动态调整但需要程序员负责内存的管理容易出现内存泄漏等问题我们常说的内存泄露问题指的更多的就是堆内存的泄露。 区别 内存****管理栈内存由编译器自动管理堆内存由程序员手动管理。作用域栈内存的作用域通常是函数内部当函数返回时栈内存会自动被释放堆内存的作用域由程序员控制只要程序员不释放内存就会一直存在。生命周期栈内存的生命周期与函数执行时间相关函数执行完毕后栈内存会被释放堆内存的生命周期由程序员控制直到显式调用free函数释放内存。 堆内存的使用 使用malloc动态分配空间 malloc函数用于在堆上分配指定大小的内存块。函数声明形式为 void* malloc(size_t size);size要分配的字节数。返回值指向分配的内存块的指针如果分配失败返回NULL。 示例代码 int* ptr (int*)malloc(sizeof(int) * 10); // 分配10个int类型的内存空间 if (ptr NULL) {// 处理内存分配失败的情况 }使用calloc分配并初始化内存 calloc函数用于在堆上分配内存并初始化为0。函数声明形式为 void* calloc(size_t num, size_t size);num要分配的元素个数。size每个元素的字节数。返回值指向分配的内存块的指针如果分配失败返回NULL。 示例代码 int* ptr (int*)calloc(10, sizeof(int)); // 分配10个int类型的内存空间并初始化为0 if (ptr NULL) {// 处理内存分配失败的情况 }使用realloc调整内存大小 realloc函数用于调整已分配内存块的大小。函数声明形式为 void* realloc(void* ptr, size_t size);ptr指向要调整大小的内存块的指针。size新的内存块大小字节数。返回值指向新的内存块的指针如果分配失败返回NULL原内存块保持不变。 示例代码 int* ptr (int*)malloc(sizeof(int) * 10); // 初始分配10个int类型的内存空间 if (ptr NULL) {// 处理内存分配失败的情况 }// 使用realloc调整内存大小 ptr (int*)realloc(ptr, sizeof(int) * 20); if (ptr NULL) {// 处理内存调整失败的情况注意原内存块仍然有效 }使用free释放内存 free函数用于释放之前通过malloc、calloc或realloc分配的内存空间。函数声明形式为 void free(void* ptr);ptr指向要释放的内存块的指针。 示例代码 int* ptr (int*)malloc(sizeof(int) * 10); // 分配10个int类型的内存空间 if (ptr NULL) {// 处理内存分配失败的情况 }// 使用内存...free(ptr); // 释放内存 ptr NULL; // 将指针置为NULL避免悬挂指针栈内存与堆内存的对比 编程实践展示 以下示例展示了栈内存和堆内存的不同使用场景和特性 #include stdio.h #include stdlib.hvoid stackMemoryExample() {int stackVar 10; // 栈内存函数返回时自动释放printf(Stack variable: %d\n, stackVar); }void heapMemoryExample() {int* heapVar (int*)malloc(sizeof(int)); // 堆内存需要手动释放if (heapVar NULL) {fprintf(stderr, Memory allocation failed\n);return;}*heapVar 20;printf(Heap variable: %d\n, *heapVar);free(heapVar); // 释放堆内存heapVar NULL; // 避免悬挂指针 }int main() {stackMemoryExample(); // 调用栈内存示例函数heapMemoryExample(); // 调用堆内存示例函数return 0; }其中 stackMemoryExample函数使用了栈内存来存储局部变量stackVar当函数返回时stackVar会自动释放。 而heapMemoryExample函数则使用堆内存来存储变量heapVar并通过malloc分配内存通过free释放内存。 练习 编写一个程序动态分配一个整型数组的内存空间用于存储用户输入的5个整数然后遍历并打印这些整数。最后释放分配的内存。编写一个程序包含两个函数。第一个函数使用栈内存局部变量存储并打印一个整数数组第二个函数使用堆内存动态分配并存储用户输入的整数数组然后打印并释放内存。通过这两个函数的调用展示栈内存和堆内存在使用上的区别。 进阶 为什么malloc时候需要传递长度信息而free时候却不需要传递长度信息呢会不会多释放一些内存或者少释放了一些内存malloc更底层的原理是什么一次malloc底层都经历了什么栈内存和堆内存的区别什么场景下使用栈什么场景下使用堆呢栈数组下标越界访问会发生什么什么是栈溢出了解下常见的栈攻击手段。 码字不易欢迎大家点赞关注评论谢谢 C训练营 专为校招、社招3年工作经验的同学打造的1V1 C训练营量身定制学习计划、每日代码review简历优化面试辅导已帮助多名学员获得offer训练营介绍
http://www.w-s-a.com/news/866913/

相关文章:

  • 网站价格网页制作网站开发实训步骤
  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息
  • 企业网站视频栏目建设方案中企动力网站模板
  • 网站页面策划国外注册域名的网站
  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务
  • 网站全屏代码做网站必须用对方服务器
  • 网站速度慢wordpressssl正式申请后wordpress
  • 那个网站做玉石最专业西瓜创客少儿编程加盟
  • 备案时的网站建设方案书免费软件库
  • 惠州外贸网站建设网站模板 兼容ie8
  • 南京淄博网站建设方案php网站开发实训感想
  • 网站设计的含义只做恐怖片的网站
  • 网站改版方案ppt室内装修公司简介
  • 做色网站wordpress twenty ten
  • 马鞍山建设工程监督站建管处网站免费的海报模板网站
  • 类似百度的网站移动端的网站怎么做的
  • 网站开发需要什么文凭网站分析的优劣势
  • 海尔网站建设不足之处山东网站营销
  • 楚雄 网站建设广告设计一般人能学吗