关于程序直接操作地址
2016-08-22 17:38
253 查看
程序直接进行地址间赋值:
虽然运行结果和预计的一样,但是程序挂掉了
以后禁止这样操作,内存操作用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);
}
这次是正确操作,可以正常运行,并且重新指向是正确的。
虽然运行结果和预计的一样,但是程序挂掉了
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);
}
这次是正确操作,可以正常运行,并且重新指向是正确的。
相关文章推荐
- 关于安装SQL SERVER时出现“某个程序安装已在安装计算机上创建挂起的文件操作”的解决办法
- 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
- 汇编程序里关于地址的问题
- 关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写
- 关于:SQL 以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
- 小谈汇编程序中对VGA显存直接操作
- 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
- 关于Asp程序操作Access数据库时出现死锁.ldb的解决方法
- C# 关于URL地址操作
- 关于写程序时「对数据库操作」的一些总结。
- 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作解决办法(SQL2000)
- 关于在Java程序当中创建对象等基本操作的性能测试
- 关于“以前的某个程序安装已在安装计算机上创建挂起的文件操作……”
- 一段关于从HTML文件找出资源地址的小程序(不断更新)
- 程序实现修改宏安全性设置-关于注册表的操作 (VBA)
- 小谈汇编程序中对VGA显存直接操作
- 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作解决办法(SQL2000)
- 关于"以前的某个程序安装已在安装计算机上创建挂起的文件操作"解决办法
- 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
- 关于PE病毒编写的学习(六)——关于PE文件结构操作的程序编写