• new的使用部分笔记


    #include "stdafx.h"
    #include<iostream>
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	//动态内存的分配,必须清楚的是,分配后返回的必然是一个地址,即一个指针
    	//动态内存分配,第二点必须要说明分配大小,分配类型应该与返回类型一致
    	//第三点,动态内存,由于申请的空间可能会有数据存在,在字符串copy时一般要先初始化
    	//初始化函数为:memset(需要初始化字符串地址,初始化值,需要初始化元素个数)
    	//用完申请的空间后,需要释放空间,以免造成内存泄漏。
    	//释放空间,如果申请的是多个连续空间,需delete[]p
    
    	//申请空间
    	int *n_a = new int;//申请一块int空间
    	int *n_b = new int(2);//申请一块int空间并初始化为2
    	int *n_c = new int[3];//申请3个int空间
    	char *c_a = new char;//申请一个char空间
    	char *c_b = new char('p');//申请一个char空间并初始化为p
    	char *c_c= new char[3];//申请3个char空间
    	//初始化空间,这里只对复杂的示范char[3]
    	//我们知道,字符数组如果一开始没有初始化
    	//那么以后的赋值只能一个一个元素赋值
    	//常用的就是copy过去
    	memset(c_c, 0,3*sizeof(char));
    	char *cp_c = "lai";
    	strcpy_s(c_c, 3, cp_c);
    	delete[]c_c;
    
    	//多维数组分配
    	int n = 10, m = 8;
    	char **array = new char*[n];
    	for (int i = 0; i<n; i++)
    		array[i] = new char[m];
    
    	/*注意:上面代码在释放分配的内存时要特别注意。因为这是“深度内存分配”,所以释放时,要对每个单元里的指针指向的内存予以释放。释放内存代码如下:
         */
    	for (int i = 0; i<n; i++)
    		delete[] array[i];
    	delete[] array;
    	return 0;
    }
    
    让数据变得更安全!
  • 相关阅读:
    [USACO09Open] Tower of Hay 干草塔
    [HNOI2004]打鼹鼠
    BZOJ1222[HNOI 2001]产品加工
    BZOJ1270[BJWC2008]雷涛的小猫
    NOIP2018出征策
    解析·NOIP·冷门 CLZ最小环
    CCF-NOIP-2018 提高组(复赛) 模拟试题(九)(2018 CSYZ长沙一中)
    [脚本无敌1]图片批量处理(matlab)
    用Matlab解《2013年数据建模比赛》图像碎片拼接题
    火灾检测-fire,fire
  • 原文地址:https://www.cnblogs.com/Alyoyojie/p/5129479.html
Copyright © 2020-2023  润新知