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)语句不起作用。
分享到:
相关推荐
《C++ 内存管理算法和实现》是一本深入探讨C++内存管理的权威著作,对于程序员来说,理解和掌握内存管理是提升编程技能的关键。内存管理不仅涉及到程序的效率,也直接影响到程序的稳定性和安全性。本文将围绕该书的...
### C++内存管理详解 #### 1. 内存管理的重要性及挑战 内存管理是C++编程中的核心技能之一,也是让很多开发者头疼的问题。它之所以成为争议的焦点,是因为良好的内存管理能够带来更高的性能和灵活性,而糟糕的内存...
《C++内存管理技术内幕【电子书】》深入探讨了C++编程语言中内存管理的核心技术和方法。在C++编程中,内存管理是一个基础而复杂的话题,尤其是内存泄露问题,长期困扰着许多程序员。本书的目的是帮助开发者理解和...
总的来说,C++内存管理是一个深奥的话题,涵盖了许多底层细节和高级技术。理解和掌握这些知识对于编写高效、健壮的C++代码至关重要。通过深入学习,我们可以更好地利用内存,减少错误,提升程序性能。
C++内存管理技术内幕涵盖了这一语言的核心机制之一。C++语言的内存管理之所以复杂,是因为它提供了自由分配和释放内存的能力,使得开发者可以精确控制程序的内存使用,但同时也增加了出错的可能性。以下是对上述文档...
### C++内存管理技术内幕 #### 一、引言 内存管理是C++编程中一个极为重要的主题,它不仅关乎程序的性能与稳定性,更是衡量一个C++开发者水平的重要标准之一。良好的内存管理能够让程序更加高效地运行,而糟糕的...
### C++内存管理详解 #### 1. 内存管理概览 内存管理在C++中是一项关键且复杂的任务,由于C++提供了低级别的内存控制能力,使得开发者能够精细地控制程序中的内存分配与释放。然而,这也意味着程序员必须承担起...
"C++内存管理" C++内存管理是指在C++编程语言中,程序员对内存的申请、使用和释放的控制。良好的内存管理是C++程序的核心要素,它可以影响程序的性能、安全性和可靠性。 1. 内存管理的重要性 良好的内存管理是C++...
以下是对C++内存管理的一些核心知识点的详细解释: 1. **内存区域** - **栈区**:由编译器自动分配和回收,用于存储局部变量、函数参数等。栈空间有限,一般为几MB,过大的数据会导致栈溢出。 - **堆区**:程序员...
一个有关C++内存管理的经典之作。
总的来说,这个压缩包提供的资料对于想要深入理解C和C++内存管理、提高程序健壮性的开发者来说是一份宝贵的资源。通过学习这些材料,你可以更好地掌握内存管理的原则,预防和解决内存泄漏,以及有效地进行内存调试和...
C++内存管理是编程领域中的一个关键话题,尤其对于C++开发者来说,它既是挑战,也是机遇。内存管理是C++复杂性和灵活性的核心,既能让经验丰富的程序员获得高性能和自由,也可能让初学者陷入无尽的调试困扰。由于C++...
### C++内存管理详解 #### 1. 内存管理的重要性及挑战 内存管理是C++编程中的核心技能之一,也是让很多初学者感到头疼的一个领域。一方面,它赋予了开发者更大的灵活性和性能优势;另一方面,不当的内存管理会导致...
### C++内存管理小结(内存控制) #### 内存管理的重要性 内存管理在C++编程中占据着核心地位,既是提升程序性能的关键,也是新手程序员的“噩梦”。掌握良好的内存管理技巧,不仅能避免内存泄漏,提高代码的稳定...
下面将详细讨论C++内存管理中的关键知识点,以及如何防止内存泄漏。 首先,理解C++中的内存类型是至关重要的。C++内存分为三种主要区域:栈(Stack)、堆(Heap)和静态存储区(Static Storage)。栈内存用于存储...
深入理解C++内存管理,对于每一个致力于成为C++编程高手的人来说,是绕不开的必修课。本文将从内存分配、内存泄漏和内存回收三个方面系统地探讨C++内存管理。 首先,让我们来审视一下内存分配。C++中内存分配涉及到...
《C++内存管理算法和实现》是一本深入探讨C++内存管理机制的宝贵资源,它主要涵盖了以下几个核心知识点: 1. **动态内存分配与释放**:在C++中,我们有`new`和`delete`操作符用于动态分配和释放内存。`new`运算符在...