问题描述
- Visula Basic中关于new的一点点疑惑
-
在VB6.0语言中没有指针,但是为什么通过字符串可以传指针给C++,为什么VB的字符串不需要new,它的内存分配在哪里呢?
解决方案
VB的字符串的本质就是指针,这就是为了考虑跨语言兼容性而特意设计的。但是和标准的字符串不同,VB的字符串是有长度的,这个长度被标记在字符串的开头,当你传递字符串的时候,编译器会自动把字符串数组的首地址传过去,所以可以兼容C++。
解决方案二:
这个要看你理解的指针是什么样的了...
如果指针就是指向内存地址的变量,那么任何语言都有指针,唯一的问题是语言是否提供了指针语法给你更加底层的使用
VB6真没什么接触,不过我觉得应该它也是一样的...只不过并没有直接提供指针语法给你使用,但并不是没有指针
至于内存分配...没接触不敢乱说,不过对于内存分配这件事其实要解决还是不麻烦的,随便举个例子,比如说把字符串视为对象,声明了则自动创建对象并设置好缓冲区,赋值则给缓冲区写内容,缓冲区写满就申请更大的内存来复制原来内容,并自动删除原缓冲区使用内存....文本相连也一样,至于传值的时候单独传缓冲区内存地址就可以了,反正C风格字符串可以根据结尾来识别尺寸,在参数拿到后内部自动创建对象并且复制或者直接引用缓冲区的文本就是了
当然VB6内部内存管理可能比这个简单,也可能比这个复杂,没接触就不乱说了...只是觉得字符串给以传指针并不奇怪,具体内存怎么分配坐等其他大神解释←u←
时间: 2024-12-21 06:27:54