cudamemcpy 拷贝失败函数拷贝出错,求助

【图片】大神求助!memcpy ();内存操作函数的疑惑【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:539,510贴子:
大神求助!memcpy ();内存操作函数的疑惑收藏
最近看到这段代码,完全没理解输出结果是为什么,请求帮助!很短的代码:#include&stdio.h&#include&string.h&int main (){memcpy(&c,&apple&,4);printf(&c=%d\n&,c);return 0;} 输出结果是:
然后我再次对我的代码进行一些修改,将返回值接收到int *s再输出:#include&stdio.h&#include&string.h&int main (){int *s;s=(int *)memcpy(&c,&linux&,4);printf(&*s%d\n&,*s);printf(&c=%d\n&,c);return 0;} 输出结果:我的理解是:void *memcpy(void *dest, const void *src, size_t n);是一个内存操作函数,,它可以接受任意类型的指针进行操作。代码将&c传入memcpy(),形参接收它并主动将其转化为(void *),然后再进行赋值操作,那么完成之后c里面存储的不就应该是字符串“linux”的第一个字符‘l’么,用%d输出,就应该是它的ASC l l 码值108呀,怎么会是上图结果呢,我换了电脑实验,还是这个数值。
c语言「京东」精选新书,热书,种类齐全,天天低价,货到付款,任你选&购&!时间有限,知识无限,京选好书-c语言,做一个读书,爱书,藏书的人!
贴上memcpy()的源代码,摘自百度百科。
楼主确定apple是?linux确实是对的
u n i l的ascii排起来是什么
嗯嗯,一楼的字符串应该是“linux”,不是“apple”。
防尘补丁1.0
已看破西邮linux
楼主会了给我说下三口啦~
经过吧里大神的帮助和自己的思考,这个问题已经解决了,谢谢帮助我的大神。。下边贴上解决方法。
函数原型: void *memcpy(void *dest, void *src, unsigned int count);步骤:
1.“linux”常量字符串把它的地址传给void *
&c把它的地址传给void *dest;※二者传给形式参数的时候都被强制类型转化为(void *)类型。而且memcpy()是把void* 转化为char * 后才进行操作的(注:void *类型的指针不允许进行算法操作,二楼贴的memcpy源代码已经说明这一点)继而发生第三步:
3.“linu”这四个字符被依次拷贝到&c开始的4个char型单元中,且memcpy是从低地址向高地址进行拷贝,二楼源代码的注释中也提示了这一点:所以就像是图里的这样 现在,int型变量c里边存储的东西已经确定是什么了,题目要求以%d形式输出它,那么查询ASC L L 码表得到:u:;n:;i: ;l: ;组合起来就是:;利用计算器转化为十进制:就是一楼输出的结果啦!
实际上c中存储的就是
‘unil’,注意这里的单引号作用是化为int型的意思。
最近看到这段代码,完全没理解输出结果是为什么,请求帮助!很短的代码:#include&stdio.h&#include&string.h&int main (){memcpy(&c,&apple&,4);printf(&c=%d\n&,c);return 0;} 输出结果是:[图片]然后我再次对我的代码进行一些修改,将返回值接收到int *s再输出:#include&stdio.h&#include&string.h&int main (){int *s;s=(int *)memcpy(&c,&linux&,4);printf(&*s%d\n&,*s);printf(&c=%d\n&,c);return 0;} 输出结果:[图片]我的理解是:void *memcpy(void *dest, const void *src, size_t n);是一个内存操作函数,,它可以接受任意类型的指针进行操作。代码将&c传入memcpy(),形参接收它并主动将其转化为(void *),然后再进行赋值操作,那么完成之后c里面存储的不就应该是字符串“linux”的第一个字符‘l’么,用%d输出,就应该是它的ASC l l 码值108呀,怎么会是上图结果呢,我换了电脑实验,还是这个数值。
登录百度帐号推荐应用问题描述:在32位的嵌入式板子上,调用标准库中的memcpy函数,从数组的第三个字节将数组内容拷贝到另外个内存中,代码运行到该函数时会挂掉
原因:调用的memcpy函数是按照32位对齐来处理的,从24位开始拷贝不对齐导致挂掉
解决方法:自己实现memcpy函数,或者直接一个字节一个字节的复制
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20135次
排名:千里之外
原创:22篇
转载:43篇
(1)(1)(3)(2)(4)(8)(3)(5)(7)(5)(25)(1)2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。memcpy越界拷贝,会导致崩溃,但具体原因是什么_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
memcpy越界拷贝,会导致崩溃,但具体原因是什么
我有更好的答案
1. 获取GraphicBuffer指针 2. 调用lock函数来获取映射的内存指针 3. 调用memcpy来拷贝数据到自己申请的buffer 4. 处理完以后再写入映射的内存地址 5. unlock操作结束
采纳率:78%
来自团队:
为您推荐:
其他类似问题
等待您来回答

我要回帖

更多关于 memcpy拷贝结构体 的文章

 

随机推荐