深圳做网站的公司那个好,阳江东莞网站建设,墨客网站建设,吉林大学建设工程学院官方网站1. new和malloc
做嵌入式#xff0c;对于内存是十分在意的#xff0c;因为可用内存有限#xff0c;所以嵌入式笔试面试题目#xff0c;内存的题目高频。
1#xff09;malloc和free是c/c语言的库函数#xff0c;需要头文件支持stdlib.h#xff1b;new和delete是C的关键…1. new和malloc
做嵌入式对于内存是十分在意的因为可用内存有限所以嵌入式笔试面试题目内存的题目高频。
1malloc和free是c/c语言的库函数需要头文件支持stdlib.hnew和delete是C的关键字不需要头文件需要编译器支持
2使用new操作符申请内存分配时无需指定内存块的大小编译器会根据类型信息自行计算。而malloc则需要显式地支持所需内存的大小。
3new操作符内存分配成功时返回的是对象类型的指针类型严格与对象匹配无需进行类型转换故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void*需要通过强制类型转换将void*指针转换成我们需要的类型。
4new内存分配失败时会抛出bad_alloc异常。malloc分配内存失败时返回NULL。
2、在1G内存的计算机中能否malloc(1.2G)为什么2021浙江大华二面问题
答是有可能申请1.2G的内存的。
解析回答这个问题前需要知道malloc的作用和原理应用程序通过malloc函数可以向程序的虚拟空间申请一块虚拟地址空间与物理内存没有直接关系得到的是在虚拟地址空间中的地址之后程序运行所提供的物理内存是由操作系统完成的。
3 、extern”C” 的作用
我们可以在C中使用C的已编译好的函数模块这时候就需要用到extern”C”。也就是extern“C” 都是在c文件里添加的。
extern在链接阶段起作用四大阶段预处理--编译--汇编--链接。
4、strcat、strncat、strcmp、strcpy哪些函数会导致内存溢出如何改进2021浙江大华二面问题
strcpy函数会导致内存溢出。
strcpy拷贝函数不安全他不做任何的检查措施也不判断拷贝大小不判断目的地址内存是否够用。
char *strcpychar *strDestconst char *strSrcstrncpy拷贝函数虽然计算了复制的大小但是也不安全没有检查目标的边界。
strncpy(dest, src, sizeof(dest)); strncpy_s是安全的
strcmp(str1,str2)是比较函数若str1str2则返回零若str1str2则返回负数若str1str2则返回正数。比较字符串
strncat()主要功能是在字符串的结尾追加n个字符。
char * strncat(char *dest, const char *src, size_t n);strcat()函数主要用来将两个char类型连接。例如
char d[20]Golden;
char s[20]View;
strcat(d,s);
//打印d
printf(%s,d);输出 d 为 GoldenView 中间无空格
延伸
memcpy拷贝函数它与strcpy的区别就是memcpy可以拷贝任意类型的数据strcpy只能拷贝字符串类型。
memcpy 函数用于把资源内存src所指向的内存区域拷贝到目标内存dest所指向的内存区域有一个size变量控制拷贝的字节数
函数原型
void *memcpy(void *dest, void *src, unsigned int count);
5 、static的用法定义和用途必考
1用static修饰局部变量使其变为静态存储方式(静态数据区)那么这个局部变量在函数执行完成之后不会被释放而是继续保留在内存中。
2用static修饰全局变量使其只在本文件内部有效而其他文件不可连接或引用该变量。
3用static修饰函数对函数的连接方式产生影响使得函数只在本文件内部有效对其他文件是不可见的这一点在大工程中很重要很重要避免很多麻烦很常见。这样的函数又叫作静态函数。使用静态函数的好处是不用担心与其他文件的同名函数产生干扰另外也是对函数本身的一种保护机制。
6、const的用法定义和用途必考
const主要用来修饰变量、函数形参和类成员函数
1用const修饰常量定义时就初始化以后不能更改。
2用const修饰形参func(const int a){};该形参在函数里不能改变
3用const修饰类成员函数该函数对成员变量只能进行只读操作就是const类成员函数是不能修改成员变量的数值的。
被const修饰的东西都受到强制保护可以预防意外的变动能提高程序的健壮性。
参考一个大佬的回答:
我只要一听到被面试者说const意味着常数我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法因此ESP(译者Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章只要能说出const意味着只读就可以了。尽管这个答案不是完全的答案但我接受它作为一个正确的答案。如果应试者能正确回答这个问题我将问他一个附加的问题下面的声明都是什么意思
用户空间与内核通信方式有哪些