c语言内存泄漏

C语言 码拜 9年前 (2016-04-01) 933次浏览
void getMemory(char **p, int num)
{
*p = (char *)malloc(num);
}
void main()
{
char *str = NULL;
getMemory(&str, 100);
strcpy(str, “hello”);
cout << str  << endl;
free(str);
}
上面代码会出现内存泄漏吗?
解决方案

10

引用:

不会造成内存泄漏。
malloc判断能否成功是个好习惯(但与内存泄漏无关)。
PS: 这代码看着眼熟,哪来的?

误人子弟
当申请空间失败时,后面那个strcpy会造成内存泄漏!

10

就事论事,这个代码不会造成内存泄漏,也不会出现缓冲区溢出
假如malloc成功了,那程序正常执行,分配的空间由后面的free正常释放
假如malloc失败了,那返回的是NULL,用strcpy写NULL肯定会发生读写错误,程序会在运行时崩溃

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c语言内存泄漏
喜欢 (0)
[1034331897@qq.com]
分享 (0)