![]() |
1
1
您可以完全消除该功能。线路
可以简单地写为
当然,前提是
笔记:
如果您真的喜欢该功能,并希望保留它,请替换
用这个
这将在复制后释放内存。 |
|
2
1
createCustID()函数将分配一些内存,然后通过返回从malloc()获得的指针将其返回给调用者。 调用例程在完成结构时,可以(而且必须)通过将相同的指针传递给free()来释放内存。 在您的示例中,您需要扩展addCustomer()中的逻辑,以将它从createCustID()接收到的指针保留足够长的时间,以便(1)测试它是否为空,(2)根据需要在本地复制内容,以及(3)释放接收到的块。 正如其他人所指出的那样,您可能会发现将接收到的块构建到正在组装的数据结构中,而不是复制它更有效。但是,您仍需要释放块,作为处理更大数据结构的逻辑的一部分。 您需要使用这种类型的代码仔细规划代码路径,以便始终知道谁“拥有”分配的块,并负责在不再需要时释放它。 此外,您必须 总是 对照null检查malloc()的返回值。如果malloc未能提供所需的内存,则需要适当地处理错误;而不仅仅是将数据写入空指针。 |
![]() |
Dimitriy Glefa · 返回和运行时 2 年前 |
![]() |
ck1987pd · python中检查循环是否未执行的最佳方法 3 年前 |
![]() |
Salman Shaukat · 如何检查函数中执行了哪个返回语句? 6 年前 |