yan0524cc 2021-05-23 17:09 采纳率: 0%
浏览 40

C语言 --free()释放内存是出错

#include<stdio.h>
#include<string.h>
#include <stdlib.h> 
char* mymalloc();
int main()
{
	char* str = NULL;
	str = mymalloc();
	printf("%s", str);
	free(str);//这里释放内存出错
	//system("pause");
	return 0;
}

char* mymalloc()
{
	char* a = (char*)malloc(sizeof(char) * 20);
	char* b = "hello world";
	memset(a, '0', strlen(a));
	strcpy_s(a, 12, b);
	return a;
}

  • 写回答

6条回答 默认 最新

  • CSDN专家-link 2021-05-23 17:23
    关注

    memset(a, '0', strlen(a));----这里用strlen(a)是不对的

    memset(a, 0, sizeof(char) * 20);

    评论

报告相同问题?

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络