GetMemory的详解
来源:互联网 发布:centos 开启ftp 编辑:程序博客网 时间:2024/06/06 03:05
1.
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。
因为GetMemory并不能传递动态内存,
Test函数中的 str一直都是 NULL。
strcpy(str, "hello world");将使程序崩溃。
2.
char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。
因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是
NULL,但其原现的内容已经被清除,新内容不可知。
3.
Void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
(1)能够输出hello
(2)内存泄漏
4.
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:篡改动态内存区的内容,后果难以预料,非常危险。
因为free(str);之后,str成为野指针,
if(str != NULL)语句不起作用。
- GetMemory的详解
- GetMemory的详解
- GetMemory的详解
- Getmemory函数详解--内存操作的理解
- Getmemory函数详解--内存操作的理解
- GetMemory函数详解
- GetMemory函数详解
- GetMemory函数详解
- GetMemory函数详解
- GetMemory的典型例子
- GetMemory的典型例子
- GetMemory的典型例子
- GetMemory的问题汇总
- GetMemory的典型例子
- GetMemory的典型例子
- GetMemory的典型例子
- GetMemory
- GetMemory
- 《C#图解教程》第4章 类的基本概念 读书笔记
- 7-29 删除字符串中的子串
- Bi-shoe and Phi-shoe LightOJ
- 文章标题
- S3C2440处理器结构
- GetMemory的详解
- PAT [A1053]-Path of Equal Weight
- 合工大-数七问题
- tensorflow笔记 :常用函数说明
- 344. Reverse String
- Java Swing播放本地音乐
- 计蒜客 17115 2017 ICPC 西安网络赛 B Coin
- 如何在地图上批量标注经纬坐标
- 关于Tomcat的环境变量的配置,用于解决Tomcat闪退