系统对多个进程内存空间的简单测试

来源:互联网 发布:信用卡淘宝如何套现 编辑:程序博客网 时间:2024/05/17 22:11

子进程中,尽管指针变量中所存的内存地址和父进程中的指针变量的内存地址是一样的,
但是由于这些地址都是相对地址,(我不知道是不是这么表达)在不同的内存空间中,
对同名指针变量的操作,不能改变父进程内存中的内容。


测试代码如下:

#include <stdio.h>

int main(int argc, char *argv[])
{
    char   *a_pcTst = "123";
    int     a_iProcId = 0;

    a_iProcId = fork();
    switch (a_iProcId) {
    case 0:
        setsid();      //可有可无
        printf("[SUB :]%s/n", a_pcTst);
        printf("[SUB :]%08x/n", a_pcTst);
        memcpy(a_pcTst, "abc", 3);
        printf("--- Value Changed!!/n", a_pcTst);

        sleep(2);
        printf("[SUB :]%s/n", a_pcTst);
        printf("[SUB :]%08x/n", a_pcTst);
        exit(125);
        break;
    default:
        break;
    }
    sleep(5);
    printf("[MAIN:]%s/n", a_pcTst);
    printf("[MAIN:]%08x/n", a_pcTst);
    return 0;
}
测试结果如下:
[130]% a.out
[SUB :]123
[SUB :]40001080
--- Value Changed!!
[SUB :]abc
[SUB :]40001080
[MAIN:]123
[MAIN:]40001080