有关 函数调用和内存分配 的问题!
这时书上的一个例子,代码如下:程序代码:
#include <stdio.h> long * IncomePlus(long *); int main(void) { long your_pay = 30000L; long * pold_pay = &your_pay; long * pnew_pay = NULL; pnew_pay = IncomePlus(pold_pay); printf("\nOldpay = $%ld", * pold_pay); printf("\nNewpay = $%ld", * pnew_pay); //printf("\nNewpay = $%ld", * pnew_pay); //printf("\nOldpay = $%ld", * pold_pay); //printf("\nOldpay = $%ld, Newpay = $%ld", * pold_pay, * pnew_pay); printf("\n\n"); return 0; } long * IncomePlus(long * pPay) { long pay = 0; pay = * pPay + 10000L; return &pay; }
问题是:
1.函数 Incomeplus()中创建的变量 pay, 在函数调用结束后系统分配给它的内存有没有被释放?有没有被其他程序使用?pay 分配的内存是在堆中?还是堆栈中?
2.程序运行时,现实 Newpay 是一个垃圾值, 但是如果交换两个 printf 语句的顺序,或者将两个输出合并成一个输出, 输出貌似是正确的,这是为什么?跟内存分配有啥关系?
希望高手能指点一下,谢谢了!!!