指针传递分析与解决
来源:互联网 发布:网络正常 电脑连不上网 编辑:程序博客网 时间:2024/04/28 05:28
---------------------------
mypointer_lference.exe - 应用程序错误
---------------------------
"0x6b207369" 指令引用的 "0x6b207369" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------
//如下为出错源码
void set_arrayvalue_error_01(unsigned char *tmp)
{
//y以后的内存空间访问是不定的
strcpy((char *)tmp,"my name is kikop");
}
void testupdate_error_01()
{
//经过VC++6.0调试可以发现,printf函数实际返回的值为27字符,你那样定义数组,调试的话会发现只有一个myarray[0]有值,虽然后面的值都被加在数组后面,
//能成功输出你想输出的字符串,但是除了第一个值,后面的访问都是越界的
unsigned char myarray[]={0}; //定义的数组长度实际,被错误的指定为1,这里要特别注意
set_arrayvalue_error_01(myarray);
printf("your name:%s\n",myarray);
}
/************下面为朋友一些相应的解决方法****************/
void set_arrayvalue_solution_01(unsigned char *tmp)
{
strcpy((char *)tmp,"my name is kikop");
}
void testupdate_solution_01()
{
unsigned char myarray[100]={0}; //指定长度为100
set_arrayvalue_solution_01(myarray);
printf("your name:%s\n",myarray);
}
//采用动态分配内存的方式
void set_arrayvalue_solution_02(unsigned char **tmp)
{
*tmp = (unsigned char *)malloc(100);
strcpy((char *)*tmp,"my name is kikop");
}
void testupdate_solution_02()
{
unsigned char *myarray =NULL; //指定长度为100
set_arrayvalue_solution_02(&myarray);
printf("your name:%s\n",myarray);
free(myarray);
myarray=NULL;
}
- 指针传递分析与解决
- 分析传递指针的指针
- 指针赋值与指针传递
- 指针与参数传递
- 汇编分析参数传递中的地址传递与值传递的区别(指针,引用,值传递)
- C++ 指针传递与值传递
- C语言指针传递与值传递
- C++ 数组引用传递与指针传递
- 引用传递与指针传递区别
- 指针参数与传递内存
- C++值传递引用传递与指针传递
- 源码分析--指针、指针与引用指针
- 指针使用小结 -- 指针传递与指针所指空间赋值
- 数组与指针分析
- 函数与指针分析
- 函数 与 指针 分析
- 数组与指针分析
- 函数与指针分析
- c#读取到web.config里的数据库连接字符串
- 算法题<度度熊就是要第一个出场>
- <<海棠花 >>季羡林
- 家乡的桥
- 搭建Linux嵌入式开发环境
- 指针传递分析与解决
- 菜鸟学汇编003 代码段寄存器 CS 和 指令指针寄存器 IP
- 梅朵是藏语鲜花的意思
- 熊召政 听松
- 烟花三月下扬州
- lucene 教程详解
- java socket判断客户端是否断开连接
- 寻梅
- 你知西藏的天有多蓝