热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在跨函数中使用内存?

本文介绍了在跨函数中使用内存的方法,包括使用指针变量、动态分配内存和静态分配内存的区别。通过示例代码说明了如何正确地在不同函数中使用内存,并提醒程序员在使用动态分配内存时要手动释放内存,以防止内存泄漏。
介绍

#include 
#include
int main(void)
{
int *p; //定义了一个指针变量,但并没有为期附初值;下面两个函数都是为其fu初值的操作
f(&p); //f函数,为指针变量p附了一个准确的值,所以是正确的操作
//g(&p);//g函数,虽然在g函数执行过程中未p附了一个准确的值,但g函数执行结束后指针变量的值,并非是一个准确的值
return 0;
}

void f(int ** q)
{
*q = (int *)malloc(4); // 动态分配的内存,程序员不手动释放的话,操作系统并不会自动为其释放内存
}

void g(int ** q)
{
int r; //静态分配的内存,在该函数(g)调用完毕后,操作系统自动为期释放内存(出栈)
*q = &r;
}

//要想实现跨函数使用内存,只能通过使用动态内存的方法
例子
#include 
#include


struct Student
{
int sid;
int age;
};
struct Student * CreateStudent(void);
void ShowStudent(struct Student *);

int main(void)
{
struct Student * ps;
ps
= CreateStudent();
ShowStudent(ps);
return 0;
}

void ShowStudent(struct Student * pst)
{
printf(
"%d %d\n", pst->sid, pst->age);
}

struct Student * CreateStudent(void)
{
struct Student * p = (struct Student *)malloc(sizeof(struct Student));
p
->sid = 99;
p
->age = 88;
return p;
}
/*
输出结果:99 88
*/

 


推荐阅读
author-avatar
张心虚要加油
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有