我需要在c ++中解释free()函数

时间:2017-05-18 13:21:30

标签: c++ free

我附上以下代码块

import json, re
f = open('../file/path/here')
d = json.loads(f.read())
patents = d['PRODUCT']['attribs']

for key,val in patent_attribute.items():
    patent_group =  re.search('^(.\d)\d+', val['name']).group(1) #returns U1 U2,U3,.. or P1,P2,P3,..
    #do whatever with patent_group(U1/P1 etc)

我应该使用吗? 一个= NULL; 免费后(a);

free(a)释放内存块, 但不删除已经存在的值 存储到此块。

我是对的吗?

2 个答案:

答案 0 :(得分:-1)

在程序执行free(a)后调用a="MeUni";是错误的,因为此时a不再指向malloc(10)调用的内存块分配

此外,a=NULL;“删除a指向的内存块的值”。

我怀疑你的程序存在很多问题,但是很难说它们是什么,因为很难说你希望程序会做什么。

您似乎对指针是什么以及如何使用它们有一个非常弱的概念。如果你想学习C和/或C ++,那么你将需要学习一些好的教程和一些好书,并且可能需要上课。

答案 1 :(得分:-1)

Ohters已经评论过使用malloc / free,而不是使用std :: string,这显然是一个玩具程序等等,他们是对的;但要简要地回答一下你的问题:

  • 如果这是一个严肃的程序,你必须考虑你不再需要分配内存的地方,并且确实可以免费发布它。肯定在之前返回0'可能更早。不释放它会泄漏内存。

  • 在同样的假设下,免费后不需要清除指针,但它确实是一个好主意,因为它可以防止意外使用不再属于你的内存位置访问。