![]() |
1
5
这不是坏的做法,但它很容易造成内存泄漏(调用方必须记住释放内存)。 我喜欢做的一件事是使用命名约定来指示可以分配哪些函数。例如,我将该函数命名为:
|
![]() |
2
3
如果您将指向内存的指针返回到外部世界,那么在函数内部动态分配内存总是可以的,这样其他的东西就可以释放它,或者在函数内部释放它。 |
![]() |
3
1
嗯,这很危险。我会尽量避免。 你的假设是正确的-记忆不会自动释放。 问题是这里的返回值是在堆上分配的内存,函数的调用方必须记住释放内存。你在这里分配的内存不会(由你)被释放。对API的用户设置约束总是一个坏主意。 有时(很少)这是无法避免的,所以如果你这样做,一定要非常清楚地记录下来。 |
![]() |
4
1
这样做很常见。您只需在文档“api”中清楚地注意,调用方有责任在完成后释放返回的指针。 |
![]() |
5
1
这不是一个坏习惯。函数返回
但它并不漂亮。它是不雅的,因为它1)强制使用动态内存,而调用者可能更愿意避免使用它;2)强制使用特定的
友善的
动态存储器
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |