`

指针释放之结构体

    博客分类:
  • 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;			
	}
}
分享到:
评论

相关推荐

    C#结构体指针的定义及使用详解

    ### C#结构体指针的定义及使用详解 #### C#结构体指针的基本概念 在C#中,结构体是一种值类型的数据结构,用于封装一组相关的数据。与类不同,结构体不会自动进行垃圾回收,因此对于大量数据的操作效率较高。在...

    C++结构体参数与结构体指针参数区别Demo

    然而,需要注意的是,指针可能导致悬挂指针或者内存泄漏问题,因此在使用完结构体后,需要正确地释放或更新指针。 在`helloworld.exe`这个编译好的程序中,可能包含了对这两种方式的实际演示。运行这个程序可以帮助...

    C语言试题集(包括基础概念、函数、指针、结构体等等)

    - **结构体指针**:使用指针操作结构体,包括通过指针访问结构体成员。 - **结构体数组与结构体作为函数参数**:处理结构体数组,以及在函数间传递结构体的方式。 5. **预处理器**: - **宏定义**:理解宏替换的...

    学习MISRA-C:3、指针、结构体、联合体的安全规范.zip

    1. 空指针引用:避免对未初始化或已释放的指针进行解引用,这是导致软件崩溃的常见原因。MISRA-C建议所有指针在使用前必须初始化。 2. 指针运算:指针的加减操作需要谨慎,避免超出内存边界。遵循MISRA-C规则,限制...

    C语言指针和结构体编程实例.zip

    4. 动态内存分配:使用`malloc`和`free`函数为结构体分配和释放内存。 5. 结构体指针在数据结构中的应用,如链表、树等。 通过这些实例,你可以更好地理解C语言中指针和结构体的使用,提升编程技能。在实践中,不断...

    指针结构体测试程序

    在编程领域,尤其是在C或C++这样的低级语言中,指针和结构体是两个非常重要的概念。指针是变量的地址,而结构体则是一种复合数据类型,它允许我们将多个不同类型的数据组合在一起。在这个"指针结构体测试程序"中,...

    FreeRTOS传递结构体例程、传递数据指针例程.7z

    3. **数据生命周期管理**:发送结构体指针时,确保接收任务在处理完数据后释放资源,避免内存泄漏。 4. **错误处理**:在发送和接收过程中,可能遇到各种错误,如队列已满、任务被中断等,需要适当地处理这些异常...

    指针及结构体PPT学习教案.pptx

    指针可以用来传递结构体的地址,实现函数间的参数传递,或者动态地分配和释放内存。 总的来说,理解和熟练运用指针及结构体是成为熟练掌握C语言的程序员的关键。通过指针,我们可以直接操作内存,提高程序效率;...

    C#调用C++生成的DLL,并返回结构体引用或者结构体指针多个值

    同时,对于分配的内存,如通过`new`创建的结构体实例,C++ DLL应负责释放,而C#不应尝试释放指向这些内存的指针。 总结,C#调用C++生成的DLL返回结构体引用或指针,主要涉及结构体的定义、`DllImport`特性的使用、...

    c语言指针和结构体链表详解ppt课件.ppt

    C 语言指针和结构体链表详解 本资源主要讲解了 C 语言中的指针和结构体链表的概念和应用。结构体链表是一种重要的动态数据结构,具有动态性和灵活性,能够根据需要增加或减少元素个数,并且元素的位置可以变化。...

    指针、结构体、联合体的安全规范

    在C语言中,指针、结构体和联合体是非常重要的数据类型,它们为开发者提供了强大的功能,但也因为其灵活性而容易引发程序错误甚至安全问题。本文将深入探讨这些概念,并提出一些最佳实践来确保程序的安全性和可靠性...

    c语言学习\指针、结构体、联合体的安全规范

    ### C语言学习:指针、结构体、联合体的安全规范 在C语言的学习与应用过程中,指针、结构体和联合体是极为重要的概念。它们不仅能够帮助开发者更高效地管理内存,还能够提高程序的运行效率。然而,不当的使用方式...

    C语言给结构体指针赋值[借鉴].pdf

    8. 结构体指针变量的概念:当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。 9. 结构体指针变量的引用:结构体指针变量必须要先赋值后才能使用。赋值时,是把结构体变量的首地址赋给该指针变量。 ...

    c语言指针和结构体:链表详解.ppt

    C语言指针和结构体:链表详解 本文档主要介绍了C语言中指针和结构体的概念和应用,特别是链表的定义、基本操作和实现。 一、链表的概念 链表是一种动态数据结构,它是程序设计中一种重要的数据结构。链表中的元素...

    指向结构体的指针剥析(C)

    ### 指向结构体的指针剥析 在C语言中,指针是一个非常重要的概念,它允许程序员直接操作内存地址,实现高效的数据管理。本文将深入探讨指向结构体的指针及其应用,并进一步介绍指针与数组的交互。 #### 一、指向...

    通讯录管理系统:结构体,指针,函数

    例如,如果我们有一个函数`void modifyContact(Contact* contact)`用于修改联系人信息,我们可以传递一个结构体指针,以便函数能直接更改原始数据,而不是复制后的副本。 **3. 函数(Function)** 通讯录管理系统中...

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

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

    深入理解C语言指针和结构体

    总的来说,C语言的指针和结构体是其强大之处,也是挑战所在。深入理解这两个概念不仅能提升C语言编程能力,也能为学习其他编程语言打下坚实的基础。通过实际编程练习和分析代码,我们可以更好地掌握这些知识,并应用...

    c语言中的链表-用结构体和指针构造链表

    总结来说,通过结构体和指针构造链表是C语言程序设计中的一个基础知识点,它涉及到了结构体的定义、指针的操作以及动态内存分配。掌握这些知识对于编写高效的、内存管理良好的C语言程序至关重要。

    C++数据结构的结构体专题讲解

    以上就是C++中关于结构体专题的主要知识点,其中包括结构体类型变量的定义与初始化、结构体变量的引用方法、结构体数组、指向结构体变量的指针、结构体类型数据作为函数参数的传递方式,以及动态内存分配和释放等...

Global site tag (gtag.js) - Google Analytics