zoukankan      html  css  js  c++  java
  • c指针之内存释放

    // 1.正常使用包含指针的结构体
    // 2.正常使用元素类型为指针的vector
    #include<string.h>     
    #include<stdio.h>    
    #include<memory.h>
    #include <malloc.h>
    #include <vld.h>
    #include <vector>
    
    using std::vector;
    
    struct student
    {
    	int name;
    	char *data;
    };
    
    template <typename T>
    void ClearVector(vector<T>& v)
    {
    	vector<T>::iterator it, itEnd = v.end();
    	for (it=v.begin();it!=itEnd;it++)
    	{
    		if (*it != NULL)
    		{
    			delete *it;
    			*it = NULL;
    		}
    	}
    	vector<T> vtTemp; 
    	vtTemp.swap(v);
    }
    
    void AddStudent(vector<student*>& strVec, int name, char* data)
    {
    	char szData[100];// 这里使用一个字符数组,防止data被外部释放。
    	strcpy_s(szData, strlen(data) + 1, data);
    	struct student *ptsdu=(student*)malloc(sizeof(student));
    	memset(ptsdu,0,sizeof(student));
    	ptsdu->name = name;
    	ptsdu->data = szData;
    	strVec.push_back(ptsdu);
    }
    
    vector<student*> g_stuVec;
    
    void main(void)     
    {    
    	char data1[] = "ddbb";
    	char data2[10];
    	strcpy_s(data2, 10, "bb");
    	AddStudent(g_stuVec, 1, data1);
    	AddStudent(g_stuVec, 2, data2);
    
    	ClearVector(g_stuVec);
    	system("pause");
    } 
    
  • 相关阅读:
    【linux】which和whereis
    【linux】locate介绍
    【linux】find命令详解
    【linux】umask
    【linux】文件目录说明
    【linux】Linux系统信息查看命令大全
    【linux】mkdir -p命令
    【linux】head&&tail
    【linux】less &&more
    【linux】ls常用参数
  • 原文地址:https://www.cnblogs.com/mumuli/p/4541411.html
Copyright © 2011-2022 走看看