技术小白 发表于 2017-9-7 14:32:39

考一考!嵌入式C语言面试题三道

题一:
什么是预编译,何时需要预编译?
思考过后,再到下方寻找答案

题二:
char * const p      char const *p      const char *p上述三个有什么区别?
思考过后,再到下方寻找答案

题三:
线程与进程的区别和联系?线程是否具有相同的堆栈?dll是否有独立的堆栈?
思考过后,再到下方寻找答案



题一答案:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

题二答案:
char * const p      char const *p      const char *p上述三个有什么区别?

题三答案:
进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。每个线程有自己的堆栈。 DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃。


以下课程可免费试听C语言、电子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想学习的你和我联系预约就可以免费听课了。
宋工企鹅号:3524-6590-88   Tel/WX:173--1795--1908


页: [1]
查看完整版本: 考一考!嵌入式C语言面试题三道