永发信息网

c语言分配内存的问题

答案:2  悬赏:80  手机版
解决时间 2021-03-15 12:07
求问这个函数的问题在哪
void getMem_err(char *p)
{
char *tmp = NULL;
tmp = (char *)malloc(100);
p = tmp;
}
最佳答案
这个函数的功能是申请100个字符空间动态内存,并将首地址通过函数参数返回给调用函数。
一般情况下,这个函数能够正常工作,但当动态内存不那么富裕时,可能出现问题。比如如果系统无法提供足够的动态内存时,函数mallo()会将空指针(NULL)返回给tmp,此时如果调用函数仍按100个字节使用动态内存,就会产生异常,并停止程序运行。推荐的吃醋李方法是,一旦函数malloc()返回空指针,则立即显示错误信息,并退出应用程序。推荐的二格式是:
void *GetMem(datatype type, int size) {
    datatype *p = (datatype *)malloc(size);
    if(p) retuen p;
    return NULL;
}
全部回答
哦,运行时有异常.你的str申请完空间后,下一个赋值语句str="jjjik",使指针指向了字符串"jjjik"的内存,把原先的空间丢失了,内存泄漏;而下一句,strcpy(str+6,"hello world"); 的错误就更多了:首先,str指向的内存空间只有6个字节(还有一个'\0'),str+6内存越界,把"hello world"写到没有申请的内存里;其次,str="jjjik"是一个赋值语句,常量字符串的类型是const char *的,赋值以后str也变成const char *类型,这种类型是常量类型,常量是不容许修改的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
数字万用表怎样测空调压缩机是否断路
在钱币收藏里散连什么意思
LUMINTOP雷明兔强光手电筒在国内可以说是高端
她不知怎么的,突然就对我很冷淡,我们以前可
明工打工老板拖欠工资不给怎么办
甘肃的的特产是夜光杯吗?
中国人民人寿保险股份有限公司浦江县支公司地
怎么可以做到,一条心去学习。我比较早接触社
鹦鹉吃蜂窝煤渣起什么作用
改下水楼板砸洞对房屋有什么影响,
仙境传说RO手游三转选什么职业好 三转职业选
查家坪我想知道这个在什么地方
女主夏季晚,男主陆以枭,求告知小说名
专升本,专接本哪个就业好
为什么有些韩文字打不出来我打韩语有些复杂的
推荐资讯
伴热带能不能制作电褥子
ALTIUM DESIGNER 中的FILL下的KEEPOUT项到底
自己家的院子都用彩钢板罩住了风水好不好
新浪如何申请 高级开发者,网址给一下
脑上新屋地址在什么地方,想过去办事
三眼哮天录空戬超色hh文
怎么我台手机已经配对好蓝牙设备,但就是连接
总是不能集中精力 高三了 每次背东西写作业都
143期买什么肖
闽江水族五莲总代理这个地址在什么地方,我要
惠普win8系统一键还原会还原所有的磁盘吗?
那个唇部脱毛 真的不会再生长了吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?