开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
linux gcc
问题(Question):
很突然地想到,如果我写一个函式库,里面有一个全域变量,
当有两个以上的程式做存取变更的话,会怎样
所以自己写了一个测试程
程式码(Code):(请善用置底文网页, 记得排版)
共享函式库share.c
//内容就只是存放变量
int share = 100;
然后编译指令
gcc share.c -shared -fpic libshare.so
测试程式码
#include <stdio.h>
extern int share;
int main(){
printf("address is %x,and value=%d", &share, share);
//share = 101;
//printf("address is %x,and value=%d", &share, share);
getchar();
return 0;
}
补充说明(Supplement):
当我用一样的程式码,编出两个执行档,只是档名不同而已
结果share的位址是一样的
若其中一个把注解拿掉再编
位址就不是同一个
这里产生的困惑是共享函式库程式在内存是只有一份
函式应当没什么问题,但是变量呢
是程式各自保留一份
像java物件一样
还是说我想测试的语法根本就搞错了
希望高手出面帮忙解说一下