伟业 发表于 2021-7-3 17:09:10

【指针操作类】里的【内存复制】命令有BUG,有例子

本帖最后由 伟业 于 2021-7-3 21:44 编辑

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



li327065266kun 发表于 2021-7-3 17:31:54

本帖最后由 li327065266kun 于 2021-7-3 17:36 编辑

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

伟业 发表于 2021-7-3 18:06:40

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

你这种方法确实可以。
我那种形式,等吴总解说一下,问题根源是什么?

li327065266kun 发表于 2021-7-3 18:13:26

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

很简单啊,你没提前申明字节集地址,复制内存的时候指针都是0了肯定报错了,而且字节集是封装的,字节集地址不等于变量地址,所以你这代码不蹦才有鬼了,你看老吴封装的代码就知道取自身指针就是取变量地址了

伟业 发表于 2021-7-3 18:47:32

本帖最后由 伟业 于 2021-7-3 18:49 编辑

li327065266kun 发表于 2021-7-3 18:13
很简单啊,你没提前申明字节集地址,复制内存的时候指针都是0了肯定报错了,而且字节集是封装的,字节集地址 ...
要提前申请字节集空间这一点我知道,问题是例子里第一次执行内存复制()是成功的,而且复制出来的数据是正确的,第二次再执行内存复制()出问题,注意一点,第二执行时这些变量是重新申明创建的,不是第一次那些变量在重复使用,说明问题是停留在 内存复制()内部,也许是我错了,但问题出现值得研究一下。

小蜗牛 发表于 2021-7-3 19:09:17

1:首先要先分配内存...
2:你不应该用 取对象自身地址()而是应该用 字节集.取字节集指针()
3:长度不应该是 取数据类型尺寸()

小蜗牛 发表于 2021-7-3 19:12:01

其次..不会用还是不建议内存操作...
可以用:文本到字节集()
如果学习的话..要有点耐心..各种尝试...不要一遇到问题就论坛问....自己领悟到的..印象才会深刻..

小蜗牛 发表于 2021-7-3 19:14:09

也不要动不动就说BUG....其实是你不会用..............

呵呵仙8 发表于 2021-7-3 20:09:03

你是不是强占了另一个变量的栈!没有还原!如不想还原。可以两变量的栈交换的!

呵呵仙8 发表于 2021-7-3 21:38:56

刚下了你源码!!的确是9楼我说的问题!!是你强行变身为对方,但又没还原自身结构!!造成的崩!!注意,你复制的是变量结构,这个结构只是一些字节个数和字节集指针,标记等系统用于自动释放用的!!因你的变身,造成了系统对两个一样结构变量释放了两次.所以,就崩了!!
解决方案有两种:
1,两个变量把结构交换,不会崩!
2,强行变身为对方的,子程序未退前要还原自身结构,不会崩!
页: [1] 2
查看完整版本: 【指针操作类】里的【内存复制】命令有BUG,有例子