[url]http://learn.akae.cn/media/ch23s06.html[/url]
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);
}