做网站需要投标吗,百安居装修官网,百度推广客户端教程,百度2022第三季度财报定义了两个函数print_stack()和print_malloc()#xff0c;分别演示了两种不同的内存分配方式#xff1a;栈内存和堆内存。然后在main()函数中调用这两个函数#xff0c;并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的#xff0c;当函数返回后分别演示了两种不同的内存分配方式栈内存和堆内存。然后在main()函数中调用这两个函数并将它们返回的指针打印出来。 由于print_stack()中的数组c是在栈上分配的当函数返回后c所在的内存空间就会被释放因此在main()函数中再次打印p时会导致未定义的行为。 而print_malloc()函数中使用了动态内存分配函数malloc在函数返回后由于是在堆上分配的内存空间因此在main()函数中再次打印p时仍然能够正确输出来。
代码展示
#include stdio.h
#include stdlib.h
#include string.h#define N 5
char* print_stack(){char c[100]hello hasdhkjas;char *p;pc;puts(p);return p;
}char* print_malloc(){char *p;p(char*)malloc(N);strcpy(p,helloolleh);puts(p);return p;}int main(){char *p;p print_stack();puts(p);p print_malloc();puts(p);return 0;
}
结果展示