数据结构~

double的存储方式:符号位,指数位,尾数部分

new的作用

new是一个操作符,进行动态分配内存,返回该对象的指针

new申请的内存是连续的吗

结论:在逻辑地址上是连续的,在物理地址上可能是不连续的。

1、linux内核管理内存空间的分配,所有程序对内存空间的申请和其他操作,最终都会交给内核来管理。
2、linux实现的是“虚拟内存系统”,对用户而言,所有内存都是虚拟的,也就是说程序并不是直接运行在物理内存上,而是运行在虚拟内存上,然后由虚拟内存转换到物理内存。
3、linux将所有的内存都以页为单位进行划分,通常每一页是4KB;
4、在对虚拟内存地址到物理内存地址进行转换时,内核会对地址的正确性进行检查,如果地址是合法的,内核就会 提供对应的物理内存分页;如果是申请内存空间,内核就会检查空余的物理内存分页,并加以分配,如果物理内存空间不足,内核会拒绝此次申请;
5、使用malloc分配的内存空间在虚拟地址空间上是连续的,但是转换到物理内存空间上有可能是不连续的,因为有 可能相邻的两个字节是在不同的物理分页上;

左值右值问题

智能指针

cpp到exe的过程

对于C++源文件,从文本到可执行文件一般需要四个过程:

1、预处理阶段: 对源代码文件中预编译指令进行分析和替换,生成后缀名为.i的预编译文件。主要处理

将所有的#define删除,并且展开所有的宏定义
处理所有条件预编译指令,比如#if、#ifdef、#elif、#else、#endif
处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置,这个过程是递归进行的
删除所有的注释//和/* */
2、编译阶段: 将经过预处理后的预编译文件进行一系列词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件,生成一个.s文件。

3、汇编阶段: 汇编器是将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎对应一条机器指令。将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件。生成一个.o文件。

4、链接阶段: 将多个目标文件及所需要的库连接成最终的可执行目标文件。可能会引用别的模块中的函数或全局变量,编译单个cpp时无法知道准确地址,需要链接器进行链接。

链接的两种方式

静态链接

这种链接方式,函数的代码将从其所在的静态链接库被拷贝到最终的可执行文件中,静态链接库是一个目标文件的集合,其中的每个文件含有库中相关函数的代码
动态链接

这种方式下,函数的代码被放到动态链接库或共享对象的某个目标文件中,链接程序此时做的只是在最终的可执行文件中记录下共享对象的名字和其他少量登记信息

在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚拟地址空间,动态链接程序将根据程序中记录的信息找到相应的函数代码

区别

使用动态链接能够使最终的可执行文件比较小,并且当共享对象被多个进程使用时能节约更多内存

但一些情况下动态链接会带来性能上的损害

链表相交如何找节点

游戏开发方面做过哪些努力

  1. 一个基本语言的学习使用,对算法和数据结构的理解,在大学期间不断学习算法和数据结构来提升自己的思维能力
  2. 学习一款游戏引擎,制作简单demo

游戏开发需要注意什么

我认为第一步就是要看清楚策划给的需求文档,不明白的地方要先沟通,然后就是自己整理逻辑,比如说哪部分函数要放在客户端去执行,哪部分要放在服务器执行,理清楚自己的逻辑,先用最朴素的思路思考,之后,想可不可以用一些算法优化,比如用映射来代替遍历,来降低时间复杂度,期间哪里不会的要请教或者查看文档及时学习解决,养成良好的代码风格,之后合并的时候,或者别人改的时候也舒服。

野指针怎么出现,如何避免

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值