zoukankan      html  css  js  c++  java
  • 进程模型测试程序

    #include <stdlib.h>
    #include <stdio.h>
    #include <errno.h>
    #include <pthread.h>

    //extern int errnop;
    //extern int errno;
    extern _text;
    extern _etext;
    extern _data;
    extern _edata;
    //extern char *environ[];
    int     i_initialized = 1;      /* initialized global variable. */
    long    l_uninitialized;        /* uninitialized global variable. */
    //int g_i300;
    void thread_sub_func(void* param)
    {
        int i_val2;
        printf("param =        \t\t0x%016p\n",&param);
        printf("i_val2 =       \t\t0x%016p\n",&i_val2);
        printf("size =       \t\t%lld\n",(long long)param-(long long)&i_val2);
        //memset(&i_val2,0,124);
    }
    void thread_func()
    {
        int i_val;
        printf("i_val =        \t\t0x%016p\n",&i_val);
        int* pi = new int();
        if(pi == NULL)
        {
            fprintf(stderr,"分配内存失败\n");
            return;
        }
        printf("pi =        \t\t0x%016p\n",pi);
        char* pMalloc;
        if((pMalloc = (char*) malloc(10)) == NULL)
        {
            return;
        }
        printf("pMalloc =        \t\t0x%016p\n",pMalloc);
        thread_sub_func(&i_val);
        while(true)
        {
            fprintf(stdout,"pthread...\n");
            sleep(1);
        }
    }
    int
    main(int argc, char *argv[])
    {
            typedef void *(*FUNC)(void *);
        char    str_buf[BUFSIZ];    /* auto storage class variable. */
        char    *heap_mem;          /* heap memory. */
        if ((heap_mem = (char*)malloc(BUFSIZ)) == /*(void *)*/NULL) {
            sprintf(str_buf, "malloc() failed with errno = %d", errno);
            perror(str_buf);
        }
        printf("_text =\t\t\t0x%016p\n", &_text);
        printf("_etext =\t\t0x%016p\n", &_etext);
        printf("_data =\t\t\t0x%016p\n", &_data);
        printf("_edata =\t\t0x%016p\n", &_edata);
        printf("argv[] =\t\t0x%016p\n", argv);
        //printf("environ[] =\t\t0x%016p\n", environ);
        
    //printf("errnop =\t\t0x%016p\n", &errnop);
        
    //printf("errno =\t\t\t0x%016p\n", &errno);
        printf("i_initialized = \t0x%016p\n", &i_initialized);
        //printf("g_i300 =        \t0x%016p\n",&g_i300);
        printf("l_uninitialized = \t0x%016p\n", &l_uninitialized);
        printf("str_buf = \t\t0x%016p\n", str_buf);
        printf("heap_mem = \t\t0x%016p\n", heap_mem);
        
        pthread_t tid;
        if(pthread_create(&tid,NULL,FUNC(thread_func),NULL))
        {
            fprintf(stderr,"创建线程失败\n");
            exit(0);
        }
        pthread_join(tid,NULL);
        exit(0);
    }
  • 相关阅读:
    go语言简述
    树莓派基础
    电信专用名词
    无线linux应用及配置--wifi配置
    udev简述
    什么是物联网网关?物联网网关具备什么功能?_转
    FTDI通用转USB芯片简述
    Spring实现文件的上传下载
    (转)JVM——内存管理和垃圾回收
    (转)JVM——自定义类加载器
  • 原文地址:https://www.cnblogs.com/hbt19860104/p/2627142.html
Copyright © 2011-2022 走看看