社区
C语言
帖子详情
内存的出错处理。
whutxuan
2003-10-20 10:13:39
int main()
{
char **p;
char *q;
malloc_mem(&q);
malloc_mem(p);//非法。
}
void malloc_mem(char **p)
{
//如何处理传入char **p指针的时候,产生的错误,也就是说传char **p,我要让
函数返回!而传 &q,的时候程序正常执行呢?
(*p)=(char *)malloc(100);
}
...全文
39
4
打赏
收藏
内存的出错处理。
int main() { char **p; char *q; malloc_mem(&q); malloc_mem(p);//非法。 } void malloc_mem(char **p) { //如何处理传入char **p指针的时候,产生的错误,也就是说传char **p,我要让 函数返回!而传 &q,的时候程序正常执行呢? (*p)=(char *)malloc(100); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TianGuangZao
2003-10-20
打赏
举报
回复
加上函数原型声明后,还报错吗?
我用 gcc 没报任何错误和警告,已经打开 -Wall 警告。
我测试的完整代码:malloc() 的函数原型在 stdlib.h 里声明的。
#include <stdlib.h>
void malloc_mem(char **p);
int main()
{
char **p;
char *q;
malloc_mem(&q);
malloc_mem(p);
return 0;
}
void malloc_mem(char **p)
{
//如何处理传入char **p指针的时候,产生的错误,也就是说传char **p,我要让
//函数返回!而传 &q,的时候程序正常执行呢?
(*p)=(char *)malloc(100);
}
我的理解是代码没错,就是存在逻辑错误。
malloc_mem(p);
传递的是main() 中 p 指针的拷贝,或称之为传值。malloc_mem(char **p) 函数中的 p 是自动变量,函数返回时就销毁了,所以分配的内存成了“三不管地区”了,造成泄露。
正确的函数定义应该是:
#include <stdlib.h>
char ** malloc_mem(void)
{
return *p =(char *)malloc(100);
}
int main()
{
char **p;
p = malloc_mem(void);
return 0;
}
更加简单的方法是根本没必要使用二维指针。
#include <stdlib.h>
char * malloc_mem(void)
{
return p =(char *)malloc(100);
}
int main()
{
char *p;
p = malloc_mem(void);
return 0;
}
winco
2003-10-20
打赏
举报
回复
malloc_mem(p);//非法。
此中情况编译器自动报错
winco
2003-10-20
打赏
举报
回复
typedef char* lchar;
void malloc_mem(lchar& p)
{
//如何处理传入char **p指针的时候,产生的错误,也就是说传char **p,我要让
//函数返回!而传 &q,的时候程序正常执行呢?
p=(char *)malloc(100);
}
int main()
{
lchar *p;
lchar q;
malloc_mem(q);
// malloc_mem(p);//非法。
return 0;
}
TianGuangZao
2003-10-20
打赏
举报
回复
#include <stdio.h>
void malloc_mem(char **p);
int main()
...
你忘记写函数原型了。
虚拟
内存
设置
出错
怎么办
下面我们来看下电脑故障|虚拟
内存
设置
出错
怎么办? 第一、不能设置“虚拟
内存
”经常表现为发现系统的“虚拟
内存
”不能更改大小,也不能设置在非操作系统文件所在的区
处理
方案:以管理员身分登录到系统,打开“我...
正确
处理
内存
出错
故障
to cont美的Uclean滤水壶ne”、“memor美的Uclean滤水壶e”、“memory write/read failure”或报:“memory allocation error”等,这些问题都属
内存
出错
故障,它与
内存
减少、
内存
不足及奇偶检验错误不同。
【C 语言】二级指针案例 ( 多级指针
内存
释放问题 | 多级指针避免野指针 )
一、多级指针
内存
释放、 1、多级指针
内存
释放 ( 执行顺利的情况 )、 2、分配
内存
出错
处理
情况、 二、完整代码示例、
delphi 发生
内存
错误
处理
方法
当发生
内存
错误时
处理
方法: 例如提示信息: <br /> "0x00594324" 指令引用的"0x0145d184"
内存
,该
内存
不能为“read” 解决方法: 设置断点跟踪进去看,可以...
mongodb
内存
占用情况监控
MongoDB使用的是
内存
映射...MongoDB并不干涉
内存
管理工作,而是把这些工作留给操作系统的虚拟缓存管理器去
处理
,这样的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大
内存
,事实上MongoDB...
C语言
69,374
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章