如果我需要进行字符串操作或操作任何类型的数组,无论是标准类型(如 int 还是自定义数据结构)。什么是更好的局部变量或动态分配和取消分配内存?
我知道,如果您使用的是局部变量,则不需要分配/取消分配内存,这可能会使我们免于内存泄漏。但我想知道为什么人们喜欢使用动态分配内存。它只是一种编码风格还是真的有它的好处。它还取决于我们正在编译的系统还是取决于编译器?
即使系统有足够的内存和速度资源,哪种技术更适合优化代码?
最佳答案
就速度而言,本地的堆栈分配操作几乎总是胜过动态内存分配。原因是,在动态内存分配期间,您的程序需要向操作系统寻求帮助。这会导致上下文切换(非常慢/昂贵),并阻塞直到操作系统返回一 block 内存(它甚至可能无法返回)。
然而,您的程序已经拥有自己的堆栈,因此它可以根据需要操作它而不会中断执行流程(多任务处理除外,这无论如何都不受您的控制)。
动态内存分配的好处是有时我们直到运行时才知道需要分配多少内存。如果没有动态分配,我们将需要预先分配一个静态缓冲区,并为最坏的情况(我们可能有也可能没有足够的资源)预留足够的内存。
关于c - 在使用局部变量的 C 分配/取消分配内存中哪个更好?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532282/