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");
    } 
    
  • 相关阅读:
    IO模型详解
    Java中的CAS实现原理
    深入理解幂等性
    区块链基本原理入门
    通俗易懂讲解IO模型
    java高级特性(4)--枚举
    static、final和finalize详解
    锁(3)-- DB锁
    浅析项目中的并发
    分布式(1)-- 分布式锁
  • 原文地址:https://www.cnblogs.com/mumuli/p/4541411.html
Copyright © 2011-2022 走看看