c++复合类型(使用new来分配内存/创建动态数组、delete释放内存)
2023-06-13 09:15:05 时间
一、使用new来分配内存
以下代码演示了如何将new用于两种不同的类型。
#include<iostream>
using namespace std;
int main()
{
int nights = 1001;
int* pt = new int;
*pt = 1001;
cout << "nights value = ";
cout << nights << ":location " << &nights << endl;
cout << "int";
cout << "value = " << *pt << ": location = " << pt << endl;
double* pd = new double;
*pd = 10000001.0;
cout << " double ";
cout << "value = " << *pd << ": location = " << pd << endl;
cout << "location of pointer pd: " << &pd << endl;
cout << "size of *pt = " << sizeof(*pt) << endl;
cout << "size of pd = " << sizeof pd;
cout << ": size of *pd = " << sizeof(*pd) << endl;
return 0;
}
1、学习使用new来分配内存之前要了解指针的用法。
2、指针真正的勇武之地在于,在运行阶段分配未命名的内存以存储内存;
在c语言中,可以用库函数malloc()来分配内存;在c++中仍然可以这样做,但c++还有更好的方法——new运算符。
二、使用delete释放内存
int * ps = new int;
. . .
delete ps;
1、只能用delete来释放使用new分配的内存。然而,对空指针使用delete是安全的。
2、养成良好的代码习惯,当创建new时最好同时敲出delete用来释放。
三、使用new来创建动态数组
#include<iostream>
using namespace std;
int main()
{
double* p3 = new double[3];
p3[0] = 0.2;
p3[1] = 0.5;
p3[2] = 0.8;
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 + 1;
cout << "Now p3[0] is " << p3[0] << " and ";
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 - 1;
delete[] p3;
return 0;
}
1、使用new[ ]为数组分配内存,则应使用delete[ ]来释放。
2、使用new[ ]为一个实体分配内存,则应使用delete(没用方括号)来释放。
相关文章
- C++实现卷积操作
- 【C++ spdlog】C++ 日志库 spdlog 使用
- C++ 指针的两种操作,通过指针赋值 & 对指针赋值「建议收藏」
- LeetCode455分发饼干c++贪心解法
- 香农编码c++实现_香农费诺编码例子
- Linus Torvalds:“C++ 真是一门很烂的语言!”
- C++输出对象在内存中的地址
- 【c++】【基础】【primer_plus】【第四章】指针与内存
- C++进阶之哈希(unordered_mapu002Fset的使用及其模拟)
- C++ Boost 内存池与智能指针
- C/C++ 实现内存特征码搜索
- C/C++中void用法总结
- C/C++中const char*、char const*、char * const三者的区别
- 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
- C/C++内存管理
- 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ① ( 安装中文扩展 | 安装 C/C++ 扩展 )
- C++内存管理
- C++与C的内存管理优化和再封装
- c++基础篇之C++ 模板
- C++内存对象布局详解编程语言
- C++ string获取字符串元素:[]和at()
- C++中关于Crt的内存泄漏检测的分析介绍
- 关于C++内存中字节对齐问题的详细介绍
- 用C++实现队列的程序代码
- C++内存泄漏及检测工具详解
- 深入理解c/c++内存对齐
- c++实现逐行读取配置文件写入内存的示例
- C++之WSAAsyncSelect模型实例