`

point point

阅读更多
http://learn.akae.cn/media/ch23s06.html
int main(int argc, char *argv[])
{
    int i = 8;
    int *pi = &i;
    int **ppi = π
    printf("%d \n",*pi);
    printf("%d \n",**ppi);

    printf("%d \n",pi);
    printf("%d \n",*ppi);

    return 0;
}

char **getpoint()
{
    static char *str = "xxxxxxx";
    printf("point %p\n",str);
    return &str;
}

int main(int argc, char *argv[])
{
    char **p = getpoint();
    printf("%s\n", *p);
    *p = NULL;
    printf("main %p\n",*p);

    getpoint();
    
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MODEBUFFSIZE 4096

// 0)特定的内存模块管理
//  1)static,只执行一次。则只malloc一次;
//  2)以后也可以找回地址,方便使用和管理
//  3)指针的指针,还可以在别处释放内存,Good!
//  但是可以在其它地方*str = NULL,那么getFileListPoint()的作用就失去效果了。对了就对了,错了就Over了
char **getModePoint()
{
    static char *str = NULL;
    if (str == NULL)
        str = (char *)malloc(MODEBUFFSIZE);
    return &str;
}

void FreeModeBuff()
{
    char **str = getModePoint();
    if (*str != NULL)
    {
        free(*str);
        *str = NULL;
    }
}

void clearModeBuff()
{
    char **str = getModePoint();
    memset(*str, 0, LISTBUFFSIZE);
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics