被调用函数里动态分配的内存要不要手动释放 20

我想手动释放来着,但是指针是在被调用函数里声明的,在调用函数里释放不了。
我的被调用函数返回的就是这个指针,我也不能在被调用函数里释放。

你指的“动态分配”是系统自动分配内存,如 char c[100];

还是手动分配的,如 char *p = (char *)malloc(100);

如果是第一种方式,则不需要手动释放。

第二种方式,释放时需要制定内存区域的指针,如free(p)。如果你在调用函数里手动分配了内存,那么需要将内存指针返回,然后再释放。

1
2
3
4
5
6
7
8
9
10
char * proc1()
{
    char *p = (char *)malloc(100);
    retrun p;
}
void proc2()
{
    char *p = proc1();    //调用 proc1
    free(p);
}

其他

都看糊涂了,你的意思是如下代码吗?
int* Func2(void)
{
int *p = new int(0);

return p;

}

void Func(void)
{
int *p = Func();

delete p;

p = NULL;

}

如果是如上代码,不可能释放不了,堆是属于整个进程的,在堆中申请的内存在任何地方都可以释放.

我看的是C
被调用函数里的变量不是本地变量吗,它在函数结束时是不是自动删除的。而不用手动释放。

首先,被调用函数里的变量是在线程栈中分配的,在离开作用域里自动回收这是没错的.但这里的自动变量是指针P,而不是指针所指向的内存,这里是有区别的,指针P所占用的内存当然会自动回收,但指针所指的内存是由malloc分配的,这是在进程的默认堆里分配的,必须用free回收(不过就算没调用free程序结束时也会由操作系统回收).
从你发出的代码来看是完全没有问题的,不知道你说的不能释放是什么意思. 

如果你的主调函数在一个dll或者exe中,被掉函数在另外的dll或者exe中, 只有CRT的版本一样,你才能delete或者free,要不然可能挂掉。
如果在一个exe或者dll中,你当然可以释放。既然你想释放的指针是那个函数里声明的,想必也是那个函数里new的,这样就更加安全了。
如果你在不同的dll或者exe中互相传指针,那么要本着这样一个原则:谁new的谁delete,提供指针的地方也需要提供一个release函数用于释放指针,这样就不会因为CRT版本冲突导致程序奔溃。

函数中的指针分配的内存怎么释放相关推荐

  1. 为指针分配的内存太小

    为指针分配的内存太小 (1)为指针分配了内存,但是内存大小不够,导致出现越界错误. (2)char *p1 = "abcdefg";       char *p2 = (char ...

  2. c语言实现函数给主函数中的指针赋值的方法

    //利用二维指针.自从学了c之后,还没怎么用过二维指针,这么算是记住了 /* c语言实现函数给主函数中的指针赋值的方法*/#include<stdio.h>void f (int **p) ...

  3. C++在函数中修改指针值

    main函数中声明一个指针,在函数中修改该指针的值,希望永久修改指针值应如何做??? 错误案例: void a(int* p1) {int c = 1;int* b = &c;p1 = b;c ...

  4. c语言函数中使用指针变量,C语言函数指针变量

    C语言函数指针变量 导语:在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址. 这就是函数指针变量.下面是相关介绍,仅供参考! 在C语言中规定,一个函数总是占用一 ...

  5. 【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )

    文章目录 一.Linux 内核 动态分配内存 系统接口函数 二.统计输出 vmalloc 分配的内存 一.Linux 内核 动态分配内存 系统接口函数 Linux 内核 " 动态分配内存 & ...

  6. c语言在函数中传递指针,[求助]关于文件指针在函数中传递的问题

    [求助]关于文件指针在函数中传递的问题 我写的一个程序中文件指针在各函数间传递.请各位整理一下思路. /*=============================================== ...

  7. linux中的xorg进程占用内存资源释放

    文章目录 前言 一.xorg进程 二.释放xorg内存 1.杀死它 2.取消GUI 释放后内存展示 前言 某日巡检发现系统内存Free为0,且swap已经开始使用,从top中查到xorg进程占用的是最 ...

  8. linux 'stack'未声明(在此函数内第一次使用,c - 错误:未声明“ asm”(此函数中的首次使用) - 堆栈内存溢出...

    编译期间出现以下错误: error: 'asm' undeclared (first use in this function) EXCHANGE( s, *(a) ); ^ 在头文件中,该宏的调用方 ...

  9. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...

最新文章

  1. android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...
  2. 033_字符集和编码
  3. 体验Vysor Pro
  4. Docker基本命令入门
  5. [数据结构]前缀、中缀、前缀表达式
  6. RQNOJ #204 特种部队 sol
  7. 数据库实验二 数据查询
  8. Android音视频【五】H265/HEVC码流结构
  9. NPOI导出数据到Excel
  10. 手把手教你做出数据可视化项目(三)3D地球旋转
  11. 蓝桥杯 大臣的旅费 JAVA
  12. 如何在Linux中发现IP地址冲突
  13. 孟庆国:未来政府数字化转型——从“技术釆纳”到“价值赋能”
  14. 数据库原理与技术 作业及答案 复习用
  15. 使用Godaddy续费我的域名时遇到支付问题
  16. 【Matlab路径规划】蚁群算法机器人大规模栅格地图最短路径规划【含源码 1860期】
  17. 批量本地英语文档翻译软件
  18. [ISUX转译]iOS7人机界面指南
  19. Java项目:公寓房屋出租系统(java+SSM+JSP+EasyUI+Echarts+Mysql)
  20. 信息发布服务器出问题,电力网故障信息发布系统

热门文章

  1. java的lookAndfeel_java-LookAndFeel行为之间的区别
  2. 磁盘io php,PHP CURL如何处理上传内存中文件,避免磁盘IO开销
  3. c语言ox32左移一位的值,程序设计基础 (C)(32+32) 实验指导书.docx
  4. linux tcp参数调优,Linux TCP 性能调优笔记
  5. iphone11系列的尺寸_最强新款iPhone11系列选购指南,哪一款才是最适合自己的?...
  6. gsonformat插件_收藏非常有用的IDEA插件,没用过这些IDEA插件?怪不得写代码头疼
  7. 平台和计算机技术,两大平台技术提升及优势功能PK对比
  8. 蚂蚁保护板_南京文明施工规范装修公司哪家好 红蚂蚁装饰标准施工分享你
  9. php读取客户机本地时间,PHP如何获取客户端时区以及准确显示所在地时间
  10. class路径快捷 xml配置_SpringBoot 配置文件详解(告别XML)-class文件