社区
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);
}
...全文
31
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()
...
你忘记写函数原型了。
虚拟
内存
设置
出错
怎么办
在
处理
电脑故障当中经常会遇到虚拟
内存
的设置方面。那么如果设置虚拟
内存
后保存怎么办呢?下面我们来看下电脑故障|虚拟
内存
设置
出错
怎么办? 第一、不能设置“虚拟
内存
”经常表现为发现系统的“虚拟
内存
”不能更改大小,也不能设置在非操作系统文件所在的区
处理
方案:以管理员身分登录到系统,打开“我的电脑”,选择我们需要设置“虚拟
内存
”的分区,右击后选“属性”、“安全”点击“添加”,...
正确
处理
内存
出错
故障
启动系统或运行应美的Uclean滤水壶用程序时,系统报:“美的Uclean滤水壶error:unab美的Uclean滤水壶le to cont美的Uclean滤水壶ne”、“memor美的Uclean滤水壶e”、“memory write/read failure”或报:“memory allocation error”等,这些问题都属
内存
出错
故障,它与
内存
减少、
内存
不足及奇偶检验错误不同。
【C 语言】二级指针案例 ( 多级指针
内存
释放问题 | 多级指针避免野指针 )
一、多级指针
内存
释放、 1、多级指针
内存
释放 ( 执行顺利的情况 )、 2、分配
内存
出错
处理
情况、 二、完整代码示例、
delphi 发生
内存
错误
处理
方法
当发生
内存
错误时
处理
方法:
例如提示信息:
"0x00594324" 指令引用的"0x0145d184"
内存
,该
内存
不能为“read”
解决方法:
设置断点跟踪进去看,可以在Project-Options-Compiler里面设置Use debug dlls打勾,这样可以跟踪进VCL源码里面,如果汇编熟悉那么看View CPU窗口吧。
崩溃地址是:0x0
C++
出错
处理
try
C++ 异常
处理
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章