iOS面试iOS面试

iOS 内存管理面试题(内存布局)

2019-08-07  本文已影响16人  程序员_秃头怪
内存布局

2、64bit和32bit下 long 和char所占字节是不同的*

char:1字节(ASCII 2 = 256个字符)

char*(即指针变量):4个字节(32位的寻址空间是2,即32个bit,也就是4个字节。同理64位编译器为8个字节)

short int : 2个字节 范围 -2~> 2 即 -32768~>32767

int: 4个字节 范围 -2147483648~>2147483647

unsigned int : 4个字节

long: 4个字节 范围 和int一样 64位下8个字节,范围
-9223372036854775808~9223372036854775807

long long: 8个字节 范围-9223372036854775808~9223372036854775807

unsigned long long: 8个字节 最大值:1844674407370955161

float: 4个字节

double: 8个字节。

3、static、const和sizeof关键字

static关键字

答:Static的用途主要有两个,一是用于修饰存储类型使之成为静态存储类型,二是用于修饰链接属性使之成为内部链接属性。

在函数内定义的静态局部变量,该变量存在内存的静态区,所以即使该函数运行结束,静态变量的值不会被销毁,函数下次运行时能仍用到这个值。

在函数外定义的静态变量——静态全局变量,该变量的作用域只能在定义该变量的文件中,不能被其他文件通过extern引用。

静态函数只能在声明它的源文件中使用。

const关键字

const int a = 5;/*a的值一直为5,不能被改变*/

const int b; b = 10;/*b的值被赋值为10后,不能被改变*/

const int *ptr; /*ptr为指向整型常量的指针,ptr的值可以修改,但不能修改其所指向的值*/

int *const ptr;/*ptr为指向整型的常量指针,ptr的值不能修改,但可以修改其所指向的值*/

const int *const ptr;/*ptr为指向整型常量的常量指针,ptr及其指向的值都不能修改*/

int fun(const int a);或int fun(const char *str);
const char *getstr(void);使用:const *str= getstr();

const int getint(void);  使用:const int a =getint();

sizeof关键字

sizeof是在编译阶段处理,且不能被编译为机器码。sizeof的结果等于对象或类型所占的内存字节数。sizeof的返回值类型为size_t。

(1)展开后的结构体的第一个成员的偏移量应当是被展开的结构体中最大的成员的整数倍。

(2)结构体大小必须是所有成员大小的整数倍,这里所有成员计算的是展开后的成员,而不是将嵌套的结构体当做一个整体。

热文推荐

2019 全网 iOS 面试题以及答案总结!

上一篇下一篇

猜你喜欢

热点阅读