中国建设银行网站 路护航官网,wap网站 劣势,网站seo外链,绵阳吉工建设1、goto的使用场景有哪些#xff1f;并讨论其局限#xff1f; #xff08;1#xff09;常用来跳出死循坏#xff1b; #xff08;2#xff09;在linux开发中#xff0c;常用于打印错误#xff1b; #xff08;3#xff09;goto在某些使用场合会破坏程序的栈逻辑并讨论其局限 1常用来跳出死循坏 2在linux开发中常用于打印错误 3goto在某些使用场合会破坏程序的栈逻辑有一定的局限性。
2、嵌入式开发中常说的“字节对齐”是什么 嵌入式开发中常用到的结构体我们通常用#pragma pack(n),n为2的整数幂来指定对齐方式。
3、堆和栈的区别是什么 1栈的空间是系统自动分配和回收 堆的空间是用户手动分配回收 malloccallocreallocfree 2栈的空间较小堆的空间较大 3栈的地址空间往地址向下增长堆的地址空间是由低地址到高地址 4栈的存储效率更高
4、使用递归函数易引发什么问题 1递归次数过多会影响执行效率 2递归次数过多栈区的内存分配有限易出现栈溢出
5、sizeof()与strlen()的区别是什么 1sizeof是计算能容纳实现所建立的最大对象的字节大小的运算符参数可以是数组、指针、结构体类型、函数等 2strlen是是返回字符串的长度的功能函数其参数必须是char*字符型指针。
6、谈谈static关键字的作用 一般嵌入式软件开发的本文件的函数要全部使用static关键字声明这样是一个好的编程规范。 静态全局变量仅对当前文件可见其他文件不可访问其他文件可以定义与其同名的变量两者互不影响。 静态局部变量在声明时未赋初值编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区即使函数返回它的值也会保持不变。
6、谈谈const关键字的作用 1在变量初次定义时赋初并用关键字const修饰使变量只可访问不能重新赋值修改变量 2指针变量指向的位置不能被修改。定义时被 const 修饰的指针变量指针只能在定义时初始化不能定义之后重新指向新的数据。 3修饰的指针变量指向的变量的值不能被修改但是该指针可以指向其它空间。 4指针变量指向的位置不能被修改并且指针变量指向变量的值也不能被修改。 5函数形参可以利用const关键字进行限制来防止在函数内部修改指针指向的数据。
6、谈谈volatile关键字的作用 1裸机编程时某变量是指向寄存器中某一特定地址添加volatile的变量不进行优化处理 2在多线程中修饰共享全局变量和某函数与中断函数共享全局变量时加上volatile让编译器不要省略该变量的访问
7、内存泄漏和内存溢出是指的什么 1内存溢出是指程序申请内存时没有足够的内存供申请者使用。 2内存泄漏是指程序在申请内存后无法释放已申请的内存空间。 内存泄漏堆积后就会造成内存溢出。
8、简要写一下嵌入式的内存布局 栈(stack)含有环境变量、命令行参数、局部变量 堆(heap)通常由molloc()、calloc()分配内存realloc()、free()释放内存。 数据段 .bss段未初始化的静态数据 .data段已初始化的静态数据 .rodata段常量 代码段 .text用户代码 .init段系统初始化代码