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);
    }
  • 相关阅读:
    关于 flutter_boost splash加载动画
    [BS-23] AFN网络请求上拉/下拉刷新的细节问题总结
    [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别
    [BS-21] 关于OC中对象与指针的思考
    [BS-20] 导航控制器和视图控制器在添加控制器的区别
    ios runtime swizzle
    关于C、OC、C++、OC++、Swift的一些常识
    iOS多线程知识总结--GCD
    使用代码创建AutoLayout约束
    iOS中NSLog输出格式大全
  • 原文地址:https://www.cnblogs.com/hbt19860104/p/2627142.html
Copyright © 2011-2022 走看看