gpt4 book ai didi

c++ - 如何正确使用malloc和free memory?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:36 24 4
gpt4 key购买 nike

我想知道使用 malloc 和 free 的正确/标准方法是什么。 free后是否需要设置指针为NULL?基本上,以下两种方式中哪一种是正确的?

double* myPtr = (double*)malloc(sizeof(double)*5);
.....
free(myPtr);

double* myPtr = (double*)malloc(sizeof(double)*5);
.....
free(myPtr);
myPtr = NULL;

或者应该是其他方式使用malloc和free?谢谢。

最佳答案

两者都很好。唯一的区别是,如果您第二次尝试释放 myPtr,前一种方法会崩溃。

根据您使用的语言,malloc 行可以稍微整理一下。

使用 sizeof(*myPtr) 在您以后重构时不太容易出现错误。如果您使用的是 C,则也不需要强制转换

double* myPtr = malloc(sizeof(*myPtr)*5);

正如 WhozCraig 所指出的,如果您使用的是 C++,则有更简单的方法来分配数组

 std::vector<double> ar(5);

给你一个包含 5 个 double 的数组,如果需要,它会增加它的存储空间,并在它超出范围时自动释放它的内存。

关于c++ - 如何正确使用malloc和free memory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com