您的位置:首页 > 其它

关于程序直接操作地址

2016-08-22 17:38 253 查看
程序直接进行地址间赋值:

虽然运行结果和预计的一样,但是程序挂掉了

void liu()
{
char st[12] = { "saming\n" };
char st1[12] = { "liushihao\n" };
char *i = (char *)malloc(64);
memset(i, 0, 64);
memcpy(i, st, 12);
printf("%s\n", i);

char *q = (char *)malloc(64);
memset(q, 0, 64);
memcpy(q, st1, 12);
printf("%s\n", q);

q = i;
printf("%s\n",q);

free(i);
free(q);
}


以后禁止这样操作,内存操作用memset,memcpy, strcpy  等,  不能直接操作地址。
=====================以上纯属傻逼了==================================

void liu()
{
char st[12] = { "saming\n" };
char st1[12] = { "liushihao\n" };
char *i = (char *)malloc(64);
memset(i, 0, 64);
memcpy(i, st, 12);
printf("%s\n", i);

char *q = (char *)malloc(64);
memset(q, 0, 64);
memcpy(q, st1, 12);
printf("%s\n", q);

free(q);
q = i;
printf("%s\n", q);

//free(i);
free(q);
}

这次是正确操作,可以正常运行,并且重新指向是正确的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐