`

指针释放之结构体

    博客分类:
  • c
c 
阅读更多
typedef struct{
        uint len;
        uchar *s;
}nint;

typedef struct{
	xtime_t	log_time[16];
	uchar	log_uchar[16];
	ushort	log_ushort[16];
	uint	log_uint[16];
	uint	log_addr[16];
	ulong	log_ulong[16];
	nint	log_nint[32];
}LOG;

typedef struct{
	int code;
	LOG *log;
	long total;
	char type;
}QueryChat;


queryChat->log = (LOG *)malloc(sizeof(LOG)*gettotal);
memset(queryChat->log,0,sizeof(LOG)*gettotal);


for (j = 0; j < 32; j++){
	if (fread(&((queryChat->log+i)->log_nint[j].len), sizeof(int), 1, fp) != 1){
		goto _FAIL_;
	}
	if ((queryChat->log+i)->log_nint[j].len){
		if (((queryChat->log+i)->log_nint[j].s = (u_char*)malloc((queryChat->log+i)->log_nint[j].len + 1)) != NULL){
			if (fread((queryChat->log+i)->log_nint[j].s, (queryChat->log+i)->log_nint[j].len, 1, fp) != 1){
				goto _FAIL_;
			} else {
				(queryChat->log+i)->log_nint[j].s[(queryChat->log+i)->log_nint[j].len] = 0;
			}
		}
	}
}

int j=0,k=getnum;
if(NULL != queryChat){	
	for(i=0;i<k;i++){
		if(queryChat->log+i){
			for(j=0;j<32;j++){
				if((queryChat->log+i)->log_nint[j].s){
					free((queryChat->log+i)->log_nint[j].s);
					(queryChat->log+i)->log_nint[j].s = NULL;
				}
			}

		}
	free(queryChat->log);	
	free(queryChat);
	queryChat = NULL;			
	}
}
分享到:
评论

相关推荐

    file结构体和inode结构体

    (1)struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的...在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。如下所示

    结构体嵌套指针操作.txt

    结构体嵌套一级和二级指针操作,包括创建,malloc资源释放,防止内存泄露等等,指针与数组,二级指针与数组等操作

    Delphi 嵌套结构体流化,复制,释放

    结构体流化,复制,释放(含嵌套结构体指针,普通指针,动态数组(string,指针,结构体含指针),string,anstring等情况)(基本解决内存泄漏,非法内存访问问题). 上一个资源没完成动态数组,这个完成了,并跟踪了...

    指针是C语言可以用来直接访问内存地址

    指针是C语言中非常重要的一个概念,它可以用来直接访问...通过结构体指针,我们可以方便地实现对结构体变量的访问和操作。此外,我们还可以通过结构体指针来实现链表的操作,如链表的创建、遍历、查找、插入和删除等。

    Delphi new\dispose内存泄露问题解决方案

    delphi dispose释放结构体指针内存泄露解决方案 内存管理 delphi内存泄漏解决方案

    C++智能指针-unique-ptr智能指针详解.pdf

    和 shared_ptr 指针最⼤的不同之处在 于,unique_ptr 指针指向的堆内存⽆法同其它 unique_ptr 共享,也就是说,每个 unique_ptr 指针都独⾃拥有对其所指堆内存空间的所有 权。 这也就意味着,每个 unique_ptr 指针...

    动态分配结构体内存(malloc)

    提示:不能使用指针pcarinfo将已分配的内存区域释放,因为此时由于for循环内pcarinfo做自增运算,其所指位置已不再是动态分配内存的首地址了,因此必须使用pcarinfo释放动态分配的内存。 #include #include struct ...

    C++智能指针详解(1).pdf

    delete:指向⼀个动态独享的指针,销毁对象,并释放与之关联的内存。 动态内存管理经常会出现两种问题: (1)⼀种是忘记释放内存,会造成内存泄漏; (2)⼀种是尚有指针引⽤内存的情况下就释放了它,就会产⽣引⽤...

    C++11unique-ptr智能指针详解.pdf

    和 shared_ptr 指针最⼤的不同之处在 于,unique_ptr 指针指向的堆内存⽆法同其它 unique_ptr 共享,也就是说,每个 unique_ptr 指针都独⾃拥有对其所指堆内存空间的所有 权。 这也就意味着,每个 unique_ptr 指针...

    C++11unique-ptr智能指针详解(1).pdf

    和 shared_ptr 指针最⼤的不同之处在 于,unique_ptr 指针指向的堆内存⽆法同其它 unique_ptr 共享,也就是说,每个 unique_ptr 指针都独⾃拥有对其所指堆内存空间的所有 权。 这也就意味着,每个 unique_ptr 指针...

    如何使用JNA调用本地C/C++动态链接库详细示例代码

    4:结构体的指针和引用 5:函数指针和回调函数 6:字符串指针 7:输入一个数组 8:输出一个数组并释放空间 本资源包括三个工程: C++动态链接库; VC调用本地动态链接库; JNA调用本地动态链接库;

    结构体中动态内存的管理(malloc和free)

    C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放。虽然这是我们已经很熟悉的,但是还是...特别是当结构体中存在指针的情况下,各种问题也就会展现出来。

    C语言讲义.doc

    4.1.9 指向结构体数组的指针 73 4.1.10 结构中的数组成员和指针成员 73 4.1.11 在堆中创建的结构体 74 4.1.12 将结构作为函数参数 74 4.1.13 结构,还是指向结构的指针 74 4.2 联合体 75 4.3 枚举类型 75 4.3.1 枚举...

    数据结构文档

    数据结构的个人笔记预备知识 指针 结构体 动态内存的分配与释放

    C++智能指针shared_ptr分析

    它采取引用计数的方法来实现释放指针所指向的资源。下面是我代码实现的基本功能。 实例代码: template class sharedptr { public: sharedptr(T* ptr) :_ptr(ptr) , _refCount(new int(1)) {} sharedptr...

    包含string对象的结构与memset初始化操作

    :string对象所在空间清零,破坏了std::string对象的成员结构,使Myroxy指针资源变为野指针,操作其迭代器会出现不可预知的异常,在存储字符串时可能分配了不必要的内存空间,并且还导致这些内存不能被释放。...

    【易汇编-易语言内存机器码注入工具增强版-源码】

    4、BeaEngine.dll及FASM采用内存注入调用,不释放到硬盘,并采用易语言结构体指针调用黑科技; 5、可以选择并支持16bit、32bit及64bit汇编/反汇编功能; 6、自动修改跳转及Call指令为符号地址,便于代码修改优化; 7...

    自己使用的C语言教程PPT-适合老师备课或者自学-15篇PPT合集

    基本数据类型 控制结构-选择结构 函数 数组 指针 结构体、共用体和枚举类型 位运算 内存申请、释放、存储

    C语言基础知识教程、心得、源码示例讲解文档

    1.开始你的C语言学习之旅: 初识C语言,了解C语言的特点及其应用领域。 2.C语言基础: 数据类型、变量、常量、运算符、表达式等基础知识。 3.流程控制: 详解if、switch、for、while等条件与循环语句。 4.函数: 学习...

    c语言链表的项目(用链表实现的字典)

    用C语言做的字典程序,中使用链表和结构体,涉及的知识点有结构体,指针,链表的添加,遍历,删除,释放,文件的打开,读取,关闭等。使用Xcode写的代码,可以在Xcode4.2中直接运行,但是需要更改字典数据文件的路径...

Global site tag (gtag.js) - Google Analytics