易语言吧 关注:266,090贴子:1,663,232

【教程】【数据结构】内存操作

只看楼主收藏回复

数据结构要存储非常复杂的结构。。所以避免不了要动态申请内存。。而怎么样动态就是这次所讲的
上一期地址:http://tieba.baidu.com/p/4181983496


IP属地:河南1楼2015-11-27 20:56回复
    首先你至少要对内存有一定了解。。但不需要太多知识。。就比如你知道内存做什么用的之类的就可以了


    IP属地:河南2楼2015-11-27 20:57
    收起回复
      对于内存来说,有一个比较形象的比喻就是。。内存是一个宾馆。。他有很多房间(在内存中叫单元),每个房间还有编号(在内存中叫内存地址)。。每个房间可能有人也可能没人(对应的就是这个单元有没有程序占用了它)。。


      IP属地:河南3楼2015-11-27 21:02
      收起回复
        首先程序的数据差不多都是存在内存中(就比如变量。。你声明一个变量叫a,然后你把a赋值为1。。那么其实就是把1放进内存的某个单元)。。平时你要声明一个变量都是按Ctrl+L。。然后乱七八糟的变量名等于多少。。其实都是易语言在背后帮着准备好空间,然后各种赋值。。所以这次的目的就是不让易语言继续帮了。。而是自己来操作。。


        IP属地:河南4楼2015-11-27 21:07
        收起回复
          首先先来说一下怎么样申请。。如果说你要把数据写到内存的某个单元中。。那么你一定要拥有这个单元的操作权。。要不然你把一坨数据乱写乱画在内存中。。那就乱套了。。
          所以说怎么样拥有操作权?你需要向系统提出申请,然后系统给你权限。。你才能对那块区域读写
          于是,怎么样提出申请?易语言有一个自带的命令叫 申请内存() 我觉得还是直接丢上来代码吧


          IP属地:河南5楼2015-11-27 21:11
          回复
            欲申请的内存字节数也就是说,你要这个宾馆的多少房间。。要是小了的话,那么就有可能存不下
            是否清零就比如你住进这个宾馆的某个房间时。。是否要求把这个房间整理一下。。就比如像之前可能这块地址别的程序申请到了,然后在里面乱涂乱画。。然后就释放内存了(就像是不要那个房间了,走人)。。然后碰巧你这次也申请到了这块区域。。所以说是不是要清理一下


            IP属地:河南6楼2015-11-27 21:14
            收起回复
              好吧,这样填之后。。申请内存命令返回一个内存地址。。也就是说你要住宾馆的话。。他们会给你分配一个房间号。。然后你在那个房间内乱涂乱画都没问题。。于是就需要记住这个房间号(也就是记录内存地址),否则的话你把内存地址搞丢了。。你就找不到刚刚你住在哪里了。。所以说还是需要一个Ctrl+L的变量帮你保存……


              IP属地:河南7楼2015-11-27 21:17
              回复
                于是你就拥有了这个房间(内存单元)。。你就可以像普通变量一样。。乱涂乱画都没问题
                就比如我想在这个内存单元中写一个a文本。。那么就可以这样写


                IP属地:河南8楼2015-11-27 21:20
                收起回复
                  路过


                  来自Android客户端9楼2015-11-27 21:20
                  回复
                    申请的内存,在程序结束后,会把这个申请的内存,会还给系统吗?


                    IP属地:江苏来自iPhone客户端10楼2015-11-27 21:22
                    收起回复
                      欲写到内存的数据是说,你要在这个房间内乱涂乱画什么东西。。
                      内存区域指针就是说你要在哪个房间中乱涂乱画
                      内存区域尺寸就是说你拥有多少房间(就比如我在申请内存的欲申请的内存字节数参数中填2。。那么就是说我有两个房间可以供我乱涂乱画。。那么此处应该也要写2)


                      IP属地:河南11楼2015-11-27 21:22
                      回复
                        于是a就被成功的写到内存中了~不过又有一个问题出现了。。假设此时我不写a了。。我写ab。。那么能直接改吗?
                        首先一个字符(字符就是说a呐,b呐。。都是字符)占用一个字节。。而你写ab就是两个字符。。两个字符就需要两个房间。。而你只申请一个房间。。所以明显不够。。所以还需要改改


                        IP属地:河南12楼2015-11-27 21:24
                        收起回复


                          IP属地:河南13楼2015-11-27 21:25
                          收起回复
                            非常好,文本型是看字符长度决定要多少房间。。那么整数型呢?整数型的话在32位中。。基本不管是什么数基本都是4个字节。。这句话的意思就是说,假设此时我不写ab了。。我要写整数型的1,那么此时我就需要申请4个房间供我写1这个数。。为什么一定要申请4个房间,我也不太想解释太多。。因为牵扯牵扯就牵没了。。反正只需要记住,只要你写整数型就一定需要4个字节


                            IP属地:河南14楼2015-11-27 21:27
                            回复


                              IP属地:河南15楼2015-11-27 21:28
                              回复