第11章 动态内存分配

1.在你的系统中,你能够声明的静态数组最大长度能达到多少?使用动态内存分配,你最大能够获取的内存块有多大?

英文答案原文:

This will vary from system to system.There are several things that may affect the result on PC-based systems, includeing the memory model in use, the amount of space in the data and/or stack segment, the amount of available memory on the system, and so forth. The result on Unix systems will depend on the amount of available swap space, among other things.

答案中文翻译:

根据系统不同而值不同。以下是影响基于PC系统的因素:使用的内存模式、数据段或栈段的空闲量、系统上可用内存量等。Unix系统上,取决于可用的交换空间大小。

2.当你一次请求分配500个字节的内存时,实际上获得的动态分配的内存数量总共有多大?当你一次请求分配5000个字节时又如何?它们存在区别吗?如果有,你如何解释?

英文答案原文:

There are two explanations possible.Requesting smaller chunks may allow more memory to be allocated because the amount of memory left over after the last allocation will be smaller.This would make the total for the smaller requests larger.More likely, though,is that the total for the smaller requests is smaller:this is due to the overheed of the extra space that malloc attache to the memory in order to keep track of the size of each allocated chunk.

答案中文翻译:

可能会有两种解释。申请更小的数据块会使得更多的内存得到分配,因为上一次分配剩余的内存大小会变得更小。这将使较小的请求的总数更大。更多的情况是,实际获得的内存数量更大,因为会分配额外的头部空间用于追踪每个被分配的数据块的大小。

4.有些C编译器提供了一个称为alloca的函数,它与malloc函数的不同之处在于它在堆栈上分配内存。这种类型的分配有什么优点和缺点?

主要优点是当分配内存的函数返回时,这块内存会被自动释放。这个属性是由于堆栈的工作方式决定的,它可以保证不会出现内存泄漏。但这种方法也存在缺点。由于当函数返回时被分配的内存将消失,所以它不能用于存储那些回传给调用程序的数据。

6.当你需要编写一个程序,并希望最大限度地减少堆栈的使用量。动态内存分配能不能对你有所帮助?使用标准数据又该如何?

Yes,dynamic allocation will use less stack space because the memory for the arrays will be taken from the heap tather than stack.Dynamic allocation of scalar will help only if the values being allocated are larger than the size of a pointer,as it wold be with a large structures.There is no gain in dynamically allocation an integer because the pointer variable you must have to keep track of it takes just as much space as the integer itself,

7.删除两个free函数的调用会导致什么后果?

英文答案原文:

Memory leeks would be possible,but only when either the second or third allocations failed,meaning that the program had neerl run out of memory anyway.

答案中文翻译:

内存泄漏是可能的, 但只有当第二个或第三次分配失败时, 这意味着程序几乎用尽了内存。

C和指针课后问答题答案翻译的更多相关文章

  1. c++面向对象程序设计 课后题 答案 谭浩强 第四章

    c++面向对象程序设计课后题答案 谭浩强 第四章 1: #include <iostream> using namespace std; class Complex {public: Co ...

  2. C++面向程序设计(第二版)课后习题答案解析

    最近没什么心情整理零散的知识点,就整理一下第四章的课后习题答案. 1.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算.将运算符函数重载为非成员函数,非友元的普通函数.编程序, ...

  3. C程序设计(谭浩强)第五版课后题答案 第一章

    大家好,这篇文章分享了C程序设计(谭浩强)第五版课后题答案,所有程序已经测试能够正常运行,如果小伙伴发现有错误的的地方,欢迎留言告诉我,我会及时改正!感谢大家的观看!!! 1.什么是程序?什么是程序设 ...

  4. C++第三章课后作业答案及解析---指针的使用

    今天继续完成上周没有完成的习题---C++第三章课后作业,本章题涉及指针的使用,有指向对象的指针做函数参数,对象的引用以及友元类的使用方法等 它们具体的使用方法在下面的题目中会有具体的解析(解析标注在 ...

  5. 实验七 《FBG》—-小学生课后习题答案原型设计

    一.实验目的与要求 1.掌握软件原型开发技术 2.学习使用软件原型开发工具 二.实验内容与步骤 1.开发工具: 使用的工具:墨刀(APP端开发原型) 工具简介: 墨刀(MockingBot)是一款简单 ...

  6. javase程序设计课后题答案

    ;第1章 Java概述 编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java 执行一个java程序fristapp的方法是运行java frist ...

  7. 【视觉SLAM14讲】ch4心得与课后题答案【仅供参考】

    答案: Q1:验证SO(3) SE(3) Sim(3)关于乘法成群 SO(3) : 由P64最开始可知,乘法代表了旋转,而SO(3)是旋转矩阵的集合, SE(3)  Sim(3)  同理(最基础的部分 ...

  8. 啊哈!C语言课后参考答案下

    最近看到一本好评量很高的的C语言入门书,课本真的很好,入门的话.专业性没有那么强,但入门足够了!!好评!看着看着就想把这本书的题课后习题都写出来,最后就有了这个小结.可能有的不是最好,不那么专业,但主 ...

  9. 啊哈!C语言课后参考答案上

    最近看到一本好评量很高的的C语言入门书,课本真的很好,入门的话.专业性没有那么强,但入门足够了!!好评!看着看着就想把这本书的题课后习题都写出来,最后就有了这个小结.可能有的不是最好,不那么专业,但主 ...

随机推荐

  1. JAVA 基础编程练习题27 【程序 27 求素数】

    27 [程序 27 求素数] 题目:求 100 之内的素数 package cskaoyan; public class cskaoyan27 { @org.junit.Test public voi ...

  2. windows10环境下pip安装Scrapy报错

    问题描述 当前环境win10,python_3.6.1,64位. 在windows下,在dos中运行pip install Scrapy报错: building 'twisted.test.raise ...

  3. IDEA配置虚拟机内存

    修改idea64.exe.vmoptions(64位电脑选择此文件) 一个例子,电脑内存8G,设置如下: -Xms1024m -Xmx4096m -XX:MaxPermSize=1024m -XX:R ...

  4. 如何解决滚动条scrollbar出现造成的页面宽度被挤压的问题

    参考如下: https://www.ucloud.cn/yun/114228.html

  5. mybatis 的一对一关联查询association

    现在项目的列表查询数据需要查一个总数count, 如果直接写在同一个sql里面,会导致查询速度很慢, 因此,想到使用关联查询,例子如下: 附上代码: 其中遇到的坑哟: 1.association中的s ...

  6. oracle中表记录被另一个用户锁住

    应用场景 在查询oracle表时,提示表记录被另一个用户锁住了 有可能是在使用了pl/sql工具后修改某个表记录时,加锁,或者发生故障异常退出,下次登录进去修改不了 查询锁 --查看数据库的锁的来源. ...

  7. Redis 学习笔记(篇五):对象(RedisObject)

    Redis-对象 在以前的文章中,我们介绍了 Redis 用到的主要数据结构,比如简单动态字符串.双端链表.字典.压缩列表.整数集合. 然而 Redis 并没有直接使用这些数据结构来实现键值对的数据库 ...

  8. LeetCode 第 14 场双周赛

    基础的 api 还是不够熟悉啊 5112. 十六进制魔术数字 class Solution { public: char *lltoa(long long num, char *str, int ra ...

  9. Netty的学习

    看了几天高并发和NIO 今晚终于要开始学习Netty http://ifeve.com/netty5-user-guide/ Netty实现通信的步骤 1.创建两个NIO线程组,一个专门用于网络事件的 ...

  10. (六)Spring 中的 JdbcTemplate

    目录 概念 配置数据库 创建 JdbcTemplate 对象 增删改查代码 概念 JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 : 使用起来和 Dbutuis ...