495得票24回答
为什么使用alloca()不被视为良好的实践?

alloca()函数在栈上分配内存,而不是像malloc()一样在堆上分配内存。 因此,当我从函数返回时,内存就被释放了。 因此,实际上这解决了我释放动态分配内存的问题。 通过malloc()分配内存后释放内存是一个大问题,如果某些情况下没有释放会导致各种内存问题。 尽管具有上述功能,为什么...

152得票5回答
声明切片还是创建切片?

在Go语言中,var s []int和s := make([]int, 0)有什么区别?我发现两者都可以用,但哪一个更好呢?

120得票3回答
分配二维数组的奇怪方式?

在一个项目中,有人推动了这一行代码:double (*e)[n+1] = malloc((n+1) * sizeof(*e)); 据说这会创建一个(n+1) * (n+1)个双精度二维数组。 我说“据说”,是因为到目前为止,没有人能告诉我这究竟是什么,它的起源在哪里,为什么它应该工作(据说它确...

88得票15回答
在C语言中确定动态分配内存的大小

在C语言中,是否有一种方法可以查找动态分配内存的大小? 例如,在执行以下代码之后:char* p = malloc (100); 有没有一种方法可以找出与p相关联的内存大小?

72得票3回答
iOS中[Class new]和[[Class alloc] init]有什么区别?

可能是重复问题: Objective-C 中的 alloc、init 和 new 我对 [Class new] 和 [[Class alloc] init] 有点困惑。我使用这两种方式定义了一个名为 content 的对象。(1). NSMutableArray *conte...

58得票6回答
结构体是否总是分配在栈上,还是有时会分配在堆上?

我认为在C#中,结构元素被分配在堆栈上,因此当从创建它们的方法返回时就会消失。但是如果我将结构值放入列表中并返回它们,那会发生什么?这些元素会幸存下来。 结构实例有时候会分配到堆上吗? internal struct Stru { public int i; } internal cl...

53得票3回答
如何使用Instruments来分析内存使用和性能?

在所有的工具中,我最喜欢使用以下工具追踪模板: Zombies 工具用于检测何处存在对象过度释放的问题,非常适合调试 EXEC_BAD_ACCESS 错误。 Leaks 工具用于检测内存泄漏。 Core Animation w Color Blended Layers 工具用于检测帧率和半...

53得票8回答
声明一个大数组时遇到了堆栈溢出异常

下面的代码在我的电脑上导致了栈溢出错误int main(int argc, char* argv[]) { int sieve[2000000]; return 0; } 我该怎么解决这个问题?我正在使用Turbo C++,但是想保持我的代码仍然是C。 编辑: 谢谢您的建议...

41得票4回答
内存分配/释放?

最近我一直在研究内存分配,但对基础知识还有些困惑。我还没有完全理解其中的简单概念。什么是内存分配?会发生什么?我希望能得到以下任何问题的答案: "内存"分配在哪里? 这个"内存"是什么?数组中的空间吗?还是其他东西? 当这个"内存"被分配时会发生什么? 当内存被释放时会发生什么? 如果有人...

39得票3回答
Java中的逃逸分析

据我所知,JVM使用逃逸分析来进行某些性能优化,例如锁粗化和锁消除。我想知道JVM是否有可能使用逃逸分析决定将任何特定对象分配到堆栈上。 一些资源让我认为我的看法是正确的。是否有JVM实际上在这样做?