堆内存是什么呢?
我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题(bc或者是在老的标准中是alloc.h),它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后我们要使用free()函数来释放动态开辟的内存空间。
下面我们来看一个完整的例子:
#include <iostream>
#include <malloc.h>
using namespace std;
main()
{
int arraysize; //元素个数
int *array; //用于动态开辟数组的指针变量
cin>>arraysize;
//利用malloc在堆内存中开辟内存空间,它的大小是元素的个数乘以该数据类型的长度
array=(int*)malloc(arraysize * sizeof(int));
for(int i=0;i<arraysize;i++)
{
array[i]=i;
}
for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
free(array);//利用free释放动态开辟的堆内存空间
cin.get();
cin.get();
}
这里要特别注意个地方就是:
array=(int*)malloc(arraysize * sizeof(int));
malloc()的函数原形本身是void* malloc(size_t size),由于动态分配的空间计算机并不知道是用来做什么的所以是无类型的,但你要把它用在动态的整形数组上的时候就要显式的转换成int*了。
下面我们再介绍c++所独有的开辟和释放堆内存空间的方法,new修饰符和delete修饰符。
new和delete修饰符的操作并不需要头文件的支持,这是c++所独有的,new操作要比malloc更为简单,直接说明开辟的类型的数目就可以了,delete使用的时候如果是数组那么必须使用delete[]。
#include <iostream>
using namespace std;
main()
{
int arraysize; //元素个数
int *array;
cin>>arraysize;
array=new int[arraysize];//开辟堆内存
for(int i=0;i<arraysize;i++)
{
array[i]=i;
}
for(int i=0;i<arraysize;i++)
{
cout<<array[i]<<",";
}
cout<<endl;
delete[] array;//释放堆内存
cin.get();
cin.get();
}
分享到:
相关推荐
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。常见的数据类型包括整型、浮点型、字符型、布尔型等。例如,short、int、long、long long等整型数据类型,占用空间和取值...
这本书"这是一本C++入门书籍"显然是为了帮助初学者理解并掌握C++的基础概念和语法。C++的学习通常从以下几个方面开始: 1. **基础语法**:C++的基础包括变量声明、数据类型(如整型、浮点型、字符型等)、运算符...
在《C++入门经典》中,作者萨维奇深入浅出地介绍了这些概念。 1. **基础语法**:书中首先介绍了C++的基本语法,包括变量、数据类型、运算符、流程控制(如if语句、switch语句、for循环、while循环)等,这些都是...
总的来说,通过《C++编程从入门到精通》这个资源包,你可以系统性地学习C++语言,掌握其核心概念和编程技巧,同时了解C++在黑客编程和网络安全中的应用。配合其他学习资源和实践项目,将能帮助你成为一名精通C++的...
本"快速入门课件全解"旨在帮助初学者迅速掌握C++的基础知识和核心概念。通过学习,你可以理解以下关键点: 1. **基本语法**:C++的基础包括变量、常量、数据类型、运算符、流程控制(如if语句、switch语句、循环...
2. **C++入门**: 入门C++需要理解其核心概念,例如内存管理(堆和栈)、指针、运算符重载、模板、异常处理等。这个压缩包的目的是提供逐步指导,使初学者能够逐步构建自己的编程技能。"Solutions to Exercises.zip...
### C++入门基础知识点详解 #### 一、C++概览与历史背景 C++,作为一门兼具过程化和面向对象特性的高级编程语言,自诞生以来便在多个领域展现出强大的适用性和灵活性。由贝尔实验室的Bjarne Stroustrup博士在上...
C++6.ppt和C++8.ppt可能讨论了动态内存管理,如使用new和delete操作符进行动态内存分配与释放,以及防止内存泄漏的方法。此外,可能还涉及了数组和字符串的使用,包括一维数组、二维数组、动态数组以及字符串类std::...
以上只是C++入门的基础知识框架,实际学习中还需要结合实践,编写代码,理解并熟练运用这些概念。随着学习深入,你将接触到更高级的主题,如异常处理、模板、STL算法、文件I/O、多线程等,逐步成为精通C++的开发者。
3. **指针与引用**:C++中的指针是内存地址的别名,它允许直接访问和修改内存中的值。引用则提供了一种安全的指针替代方案,一旦初始化后就不能改变,但能像普通变量一样使用。 4. **动态内存管理**:学习如何使用...
以下是一些基于提供的书籍资源的C++入门知识点的详细解释。 1. **Exceptional C++**:这本书由Stanley B. Lippman编写,旨在帮助读者理解和避免在C++编程中常见的陷阱和误区。"Exceptional C++"涵盖了异常处理、...
在 C++ 中,new 和 delete 是对内存分配的运算符,取代了 C 中的 malloc 和 free。标准 C++ 中的字符串类取代了 C 标准 C 函数库头文件中的字符数组处理函数。C++ 中的 iostream 类库替代了标准 C 中的 stdio 函数库...
### C++入门教程知识点概述 #### 一、C++的历史与发展 C++是一种面向对象的编程语言,由Bjarne Stroustrup在1983年12月基于C语言和Simula语言的理念开发而成。起初被称为“C with Classes”,后来在1983年正式命名...
在《Borland C++入门指南》中,你将学习到如何配置开发环境以支持uCOS-II,包括设置正确的目标平台和链接选项。同时,书中还会讲解如何编写并调试与uCOS-II兼容的驱动程序和应用程序,以及如何利用Borland C++的调试...
《C++入门经典(第三版)》是一本专为初学者设计的C++编程教材,旨在帮助读者系统地掌握C++语言的基础知识和核心概念。这本书深入浅出地讲解了C++的各项特性,包括语法、面向对象编程以及泛型编程等,是提升C++编程...
C++是一种强大的面向对象编程语言,它在C语言的基础上增加了类、模板、异常处理等特性,使得编程更加灵活和高效。...在"C++入门学习例题"中,你应该会遇到这些知识点的实际应用,通过解题来巩固和提升你的编程技能。
本文将深入讲解C++的基础知识,包括入门、核心概念以及提高技巧。 首先,C++的入门学习始于了解如何编写并运行一个基本的C++程序。这通常包括四个步骤:创建项目、创建文件、编写代码和运行程序。在Visual Studio...
- **C++中的内存操作**:在C++中,使用`new`和`delete`进行动态内存分配和释放,而在C语言中则使用`malloc`和`free`。 - **字符串操作**:在C++标准库中,提供了`<cstring>`头文件来替代C语言中的字符串操作函数。...
在《Visual C++从入门到精通第三版》中,读者将学习到以下关键知识点: 1. **C++基础**:包括基本语法、变量、数据类型、运算符、流程控制语句、函数、数组、指针等。这些是C++编程的基础,也是理解后续高级概念的...
【C++入门小程序】是针对初学者设计的一系列学习资源,涵盖了C++编程语言的基础概念、核心特性以及编程实践。这个资源包旨在帮助新手逐步掌握C++编程,并建立起坚实的编程基础。 C++是一种通用的、面向对象的编程...