存储测试面试题(存储工程师面试题目)

存储测试面试题(存储工程师面试题目)答案 什么是字节对齐 需要各种类型数据按照一定的规则在空间上排列 而不是顺序的一个接一个的排放 这就是对齐 常见就是求复合类型大小 比如结构体 联合体 为什么需要字节对齐 需要字节对齐的根本原因在于 CPU 访问数据的效率问题 答案 从右往左 并且内存中栈是由高向低扩展 所以先入栈的是右边并且地址是高位 比如 printf 函数 也都是先打印最右边 答案 有可能

大家好,我是讯享网,很高兴认识大家。



答案:

什么是字节对齐:

需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐;常见就是求复合类型大小,比如结构体、联合体。

为什么需要字节对齐

需要字节对齐的根本原因在于CPU访问数据的效率问题。

答案:

从右往左,并且内存中栈是由高向低扩展,所以先入栈的是右边并且地址是高位。

比如printf()函数,也都是先打印最右边。

答案:

有可能,因为malloc是相进程申请虚拟内存,与物理地址空间没有直接关系。

答案:

申请堆内存

说明:

1. malloc    内存未初始化,如果size为0,则malloc()返回NULL或一个稍后可以成功传递给free 的唯一指针值。

2. realloc    如果size_t>原来的s申请的空间大小,比如原来是100个字节,现在是150个字节,那么就有以下两种情况:

3.calloc   申请内存空间后,会自动初始化内存空间为 0。

答案:

指针其实也是个变量,只不过这个变量里面存储的是内存地址。

举例说明:

int * a;指针类型为int *

char *c;指针类型为char *

答案:

占用内存的大小,在32为系统中无论是什么类型的指针都是4个字节。64位为8个字节。

答案:

1.概念

数组:是同种类型的集合

指针:里面保存的地址的值

2.赋值:

同种类型指针之间可以直接赋值,数组只能一个个元素赋值

3.存储方式:

数组是连续的一段空间,指针的存储空间是不确定的


讯享网

4.修改内容不同

比如:

char p[] =”hello”,我们可以执行p[0] = ‘s’操作原因是p是数组,可以使用下标的方式进行修改数组内容

Char * p = “hello” 执行p[0] = ‘s’是错误的,原因是p是指针,指向字符串常量,常量是不允许修改的

5.所占字节不同

指针永远是4个字节在32为系统中,而数组是不固定的,要看数组的类型和元素个数

答案:

野指针:是指指针指向的地址是不确定的;

原因:释放内存之后,指针没有及时置空;

避免:

答案:

智能指针是个类,用来存储指针(指向动态分配对象的指针)。

C++程序中使用堆内存是非常频繁的,堆内存的申请和释放由程序员手动管理,这很容易造成堆内存的泄漏,使用智能指针能更好的管理堆内存。

答案:

为了解决循环引用导致的内存泄漏,引入了weak_ptr。

答案:

对于一维数组来说

num+1是偏移到下个元素,&num+1是偏移整个数组

对于二维数组来说

num+1是偏移一个一维数组,&num+1是整个数组

答案:

直接的原因是为了支持运算符重载。

用指针的使用经常犯得错:

1. 操作空指针,

2. 操作野指针,

3. 不知不觉改变了指针的值,而后还以为该指针正常。如果我们要正确的使用指针,我们不得不人为地保证这三个条件。而引用的提出就解决了这个问题。

引用区别于指针的特性是 :

1. 不存在空引用(保证不操作空指针);

2. 必须初始化(保证不是野指针);

3. 一个引用永远指向他初始化的那个对象(保证指针值不变)

小讯
上一篇 2025-04-20 20:14
下一篇 2025-05-30 23:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/193615.html