递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 8380|回复: 10
打印 上一主题 下一主题

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

[复制链接]

17

主题

792

帖子

2748

积分

金牌会员

Rank: 6Rank: 6

积分
2748
跳转到指定楼层
楼主
发表于 2021-7-3 17:09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 伟业 于 2021-7-3 21:44 编辑

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

指针操作类.rar (15.83 KB, 下载次数: 33)

回复

使用道具 举报

53

主题

389

帖子

2412

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2412
沙发
发表于 2021-7-3 17:31:54 | 只看该作者
本帖最后由 li327065266kun 于 2021-7-3 17:36 编辑

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

使用道具 举报

17

主题

792

帖子

2748

积分

金牌会员

Rank: 6Rank: 6

积分
2748
板凳
 楼主| 发表于 2021-7-3 18:06:40 | 只看该作者
li327065266kun 发表于 2021-7-3 17:31
取字节集指针(),不是取对象自身指针...........还得提前  局_字节集类2.分配字节集 (255, 真) 分配字节集
...

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

使用道具 举报

53

主题

389

帖子

2412

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2412
地板
发表于 2021-7-3 18:13:26 | 只看该作者
伟业 发表于 2021-7-3 18:06
你这种方法确实可以。
我那种形式,等吴总解说一下,问题根源是什么?

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

使用道具 举报

17

主题

792

帖子

2748

积分

金牌会员

Rank: 6Rank: 6

积分
2748
5#
 楼主| 发表于 2021-7-3 18:47:32 | 只看该作者
本帖最后由 伟业 于 2021-7-3 18:49 编辑
li327065266kun 发表于 2021-7-3 18:13
很简单啊,你没提前申明字节集地址,复制内存的时候指针都是0了肯定报错了,而且字节集是封装的,字节集地址 ...

要提前申请字节集空间这一点我知道,问题是例子里第一次执行内存复制()是成功的,而且复制出来的数据是正确的,第二次再执行内存复制()出问题,注意一点,第二执行时这些变量是重新申明创建的,不是第一次那些变量在重复使用,说明问题是停留在 内存复制()内部,也许是我错了,但问题出现值得研究一下。
回复

使用道具 举报

87

主题

953

帖子

4909

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4909
6#
发表于 2021-7-3 19:09:17 | 只看该作者
1:首先要先分配内存...
2:你不应该用 取对象自身地址()  而是应该用 字节集.取字节集指针()
3:长度不应该是 取数据类型尺寸()
回复

使用道具 举报

87

主题

953

帖子

4909

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4909
7#
发表于 2021-7-3 19:12:01 | 只看该作者
其次..不会用还是不建议内存操作...
可以用:文本到字节集()
如果学习的话..要有点耐心..各种尝试...不要一遇到问题就论坛问....自己领悟到的..印象才会深刻..
回复

使用道具 举报

87

主题

953

帖子

4909

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4909
8#
发表于 2021-7-3 19:14:09 | 只看该作者
也不要动不动就说BUG....其实是你不会用..............
回复

使用道具 举报

50

主题

568

帖子

2485

积分

金牌会员

Rank: 6Rank: 6

积分
2485
9#
发表于 2021-7-3 20:09:03 | 只看该作者
你是不是强占了另一个变量的栈!没有还原!如不想还原。可以两变量的栈交换的!
回复

使用道具 举报

50

主题

568

帖子

2485

积分

金牌会员

Rank: 6Rank: 6

积分
2485
10#
发表于 2021-7-3 21:38:56 | 只看该作者
刚下了你源码!!的确是9楼我说的问题!!是你强行变身为对方,但又没还原自身结构!!造成的崩!!注意,你复制的是变量结构,这个结构只是一些字节个数和字节集指针,标记等系统用于自动释放用的!!因你的变身,造成了系统对两个一样结构变量释放了两次.所以,就崩了!!
解决方案有两种:
1,两个变量把结构交换,不会崩!
2,强行变身为对方的,子程序未退前要还原自身结构,不会崩!

评分

参与人数 1金钱 +1 收起 理由
伟业 + 1 技术性分析

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-29 05:07 , Processed in 0.103838 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表