先发基本问题,再发编程问?/p>
..........
想成为嵌入式程序员应知道?/p>
0x10
个基本问?/p>
:
1
?/p>
(void *)ptr
?/p>
(*(void**))ptr
的结果是否相同?其中
ptr
为同一个指?/p>
.(void *)ptr
?/p>
(*(void**))ptr
值是相同?/p>
2
?/p>
int main()
{
int x=3;
printf("%d",x);
return 1;
}
问函数既然不会被其它函数调用,为什么要返回
1
?/p>
mian
中,
c
标准认为
0
表示成功,非
0
表示错误。具体的值是某中具体出错信息
1
,要对绝对地址
0x100000
赋值,我们可以?/p>
(unsigned int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址?/p>
0x100000
去执行,应该怎么做?
*((void (*)( ))0x100000 ) ( );
首先要将
0x100000
强制转换成函数指?/p>
,
?/p>
:
(void (*)())0x100000
然后再调用它
:
*((void (*)())0x100000)();
?/p>
typedef
可以看得更直观些
:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();
2
,已知一个数?/p>
table
,用一个宏定义,求出数据的元素个数
#define NTBL
#define NTBL (sizeof(table)/sizeof(table[0]))
面试?/p>
:
线程与进程的区别和联?/p>
?
线程是否具有相同的堆?/p>
? dll
是否有独立的堆栈
?
进程是死的,
只是一些资源的集合?/p>
真正的程序执行都是线程来完成的,
程序启动的时候操
作系统就帮你创建了一个主线程?/p>
每个线程有自己的堆栈?/p>
DLL
中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因?/p>
DLL
中的代码是被某些线程所执行?/p>
只有线程拥有堆栈?/p>
如果
DLL
中的代码?/p>
EXE
中的线程所?/p>
用,
那么这个时候是不是说这?/p>
DLL
没有自己独立的堆栈?如果
DLL
中的代码是由
DLL
自己
创建的线程所执行,那么是不是?/p>
DLL
有独立的堆栈?/p>
以上讲的是堆栈,
如果对于堆来说,每个
DLL
有自己的堆,
所以如果是?/p>
DLL
中动态分配的