我有一段代码在哪里
for ( ; ; ) { char *buf; /* Some code */ }
这里的问题是代码每次循环循环时都会分配内存.我的意思是当它循环时,将为指针保留至少4个字节.
指针的空间将在堆栈上分配,但它会在每次迭代结束时弹出,因此您无需担心它.
我认为任何合理的编译器都会优化分配.例如,看一下GCC生产的组件:
_foo: pushl %ebp movl %esp, %ebp subl $40, %esp L2: movl -12(%ebp), %eax movl %eax, (%esp) call L_puts$stub jmp L2