递归火山软件开发平台

标题: 【指针操作类】里的【内存复制】命令有BUG,有例子 [打印本页]

作者: 伟业    时间: 2021-7-3 17:09
标题: 【指针操作类】里的【内存复制】命令有BUG,有例子
本帖最后由 伟业 于 2021-7-3 21:44 编辑

问题是例子里第一次执行内存复制()是成功的,而且复制出来的数据是正确的,第二次再执行内存复制()出问题,注意一点,第二执行时这些变量是重新申明创建的,不是第一次那些变量在重复使用,说明问题是停留在 内存复制()内部,也许是我错了,但问题出现值得研究一下。
================================
回贴的热心网友都是往正确的用法方向解答这很好,但还是没理解上面所说的问题,而是一直纠结于有没有分配内存上,不能简单的理解例子是错误的用法

(, 下载次数: 33)


作者: li327065266kun    时间: 2021-7-3 17:31
本帖最后由 li327065266kun 于 2021-7-3 17:36 编辑

取字节集指针(),不是取对象自身指针...........还得提前  局_字节集类2.分配字节集 (255, 真) 分配字节集
取对象自身指针() 跟 取变量地址() 差不多....

作者: 伟业    时间: 2021-7-3 18:06
li327065266kun 发表于 2021-7-3 17:31
取字节集指针(),不是取对象自身指针...........还得提前  局_字节集类2.分配字节集 (255, 真) 分配字节集
...

你这种方法确实可以。
我那种形式,等吴总解说一下,问题根源是什么?
作者: li327065266kun    时间: 2021-7-3 18:13
伟业 发表于 2021-7-3 18:06
你这种方法确实可以。
我那种形式,等吴总解说一下,问题根源是什么?

很简单啊,你没提前申明字节集地址,复制内存的时候指针都是0了肯定报错了,而且字节集是封装的,字节集地址不等于变量地址,所以你这代码不蹦才有鬼了,你看老吴封装的代码就知道取自身指针就是取变量地址了
作者: 伟业    时间: 2021-7-3 18:47
本帖最后由 伟业 于 2021-7-3 18:49 编辑
li327065266kun 发表于 2021-7-3 18:13
很简单啊,你没提前申明字节集地址,复制内存的时候指针都是0了肯定报错了,而且字节集是封装的,字节集地址 ...

要提前申请字节集空间这一点我知道,问题是例子里第一次执行内存复制()是成功的,而且复制出来的数据是正确的,第二次再执行内存复制()出问题,注意一点,第二执行时这些变量是重新申明创建的,不是第一次那些变量在重复使用,说明问题是停留在 内存复制()内部,也许是我错了,但问题出现值得研究一下。
作者: 小蜗牛    时间: 2021-7-3 19:09
1:首先要先分配内存...
2:你不应该用 取对象自身地址()  而是应该用 字节集.取字节集指针()
3:长度不应该是 取数据类型尺寸()
作者: 小蜗牛    时间: 2021-7-3 19:12
其次..不会用还是不建议内存操作...
可以用:文本到字节集()
如果学习的话..要有点耐心..各种尝试...不要一遇到问题就论坛问....自己领悟到的..印象才会深刻..

作者: 小蜗牛    时间: 2021-7-3 19:14
也不要动不动就说BUG....其实是你不会用..............
作者: 呵呵仙8    时间: 2021-7-3 20:09
你是不是强占了另一个变量的栈!没有还原!如不想还原。可以两变量的栈交换的!
作者: 呵呵仙8    时间: 2021-7-3 21:38
刚下了你源码!!的确是9楼我说的问题!!是你强行变身为对方,但又没还原自身结构!!造成的崩!!注意,你复制的是变量结构,这个结构只是一些字节个数和字节集指针,标记等系统用于自动释放用的!!因你的变身,造成了系统对两个一样结构变量释放了两次.所以,就崩了!!
解决方案有两种:
1,两个变量把结构交换,不会崩!
2,强行变身为对方的,子程序未退前要还原自身结构,不会崩!
作者: 伟业    时间: 2021-7-3 21:42
呵呵仙8 发表于 2021-7-3 21:38
刚下了你源码!!的确是9楼我说的问题!!是你强行变身为对方,但又没还原自身结构!!造成的崩!!注意,你复制的是 ...

技术性分析




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4