basic-Visula Basic中关于new的一点点疑惑

问题描述

Visula Basic中关于new的一点点疑惑

在VB6.0语言中没有指针,但是为什么通过字符串可以传指针给C++,为什么VB的字符串不需要new,它的内存分配在哪里呢?

解决方案

VB的字符串的本质就是指针,这就是为了考虑跨语言兼容性而特意设计的。但是和标准的字符串不同,VB的字符串是有长度的,这个长度被标记在字符串的开头,当你传递字符串的时候,编译器会自动把字符串数组的首地址传过去,所以可以兼容C++。

解决方案二:

这个要看你理解的指针是什么样的了...
如果指针就是指向内存地址的变量,那么任何语言都有指针,唯一的问题是语言是否提供了指针语法给你更加底层的使用
VB6真没什么接触,不过我觉得应该它也是一样的...只不过并没有直接提供指针语法给你使用,但并不是没有指针
至于内存分配...没接触不敢乱说,不过对于内存分配这件事其实要解决还是不麻烦的,随便举个例子,比如说把字符串视为对象,声明了则自动创建对象并设置好缓冲区,赋值则给缓冲区写内容,缓冲区写满就申请更大的内存来复制原来内容,并自动删除原缓冲区使用内存....文本相连也一样,至于传值的时候单独传缓冲区内存地址就可以了,反正C风格字符串可以根据结尾来识别尺寸,在参数拿到后内部自动创建对象并且复制或者直接引用缓冲区的文本就是了
当然VB6内部内存管理可能比这个简单,也可能比这个复杂,没接触就不乱说了...只是觉得字符串给以传指针并不奇怪,具体内存怎么分配坐等其他大神解释←u←

时间: 2024-08-03 09:25:34

basic-Visula Basic中关于new的一点点疑惑的相关文章

c++-Visula Basic 6.0语言调用C++ struct结构体中的字符串问题

问题描述 Visula Basic 6.0语言调用C++ struct结构体中的字符串问题 VB6调用C++ DLL结构体struct中的字符串,内存预分配的写法是什么,内存回收怎么做?VB不能用指针的谢谢 解决方案 VB不支持指针,一般你可以定义成局部变量,这样函数退出会自动回收的. 解决方案二: c++公用体union.结构体struct内存分配问题

Visula Basic工程-引用和工程-部件中的控件用法有什么不同

问题描述 Visula Basic工程-引用和工程-部件中的控件用法有什么不同 Visula Basic工程-引用和工程-部件中的控件用法有什么不同,是不是引用的控件必须先new才能使用? 解决方案 通常工程-引用是activex dll,而工程-部件是activex-ocx,前者是库,后者是界面控件. 解决方案二: 说VB.net 吧?通常不需要 new , 使用方法并没有大的区别

Visula Basic 6.0能不能把OCX控件嵌入到EXE中

问题描述 Visula Basic 6.0能不能把OCX控件嵌入到EXE中 很多市面上的程序只有一个EXE但是功能很全面,在Visula Basic 6.0里能不能把OCX控件嵌入到EXE中? 解决方案 http://zhidao.baidu.com/link?url=sLFojgNnoJ56qO68LcFR02QPJ08mfthrc7VzPMSbUa7I3iTxfa6OHVOyIIeGgaHA8BKax387cfe_3OipkL5Emq

Visula Basic 6.0语言编程项目添加控件的问题

问题描述 Visula Basic 6.0语言编程项目添加控件的问题 VB6.0中添加控件到窗体,已经引用了这个工程,为什么还是提示说ActveX无法创建对象??? 解决方案 你的控件有没有正确注册,是什么控件?如果是商业控件,有些需要安装许可证.

basic-Visula Basic 6.0 中 LenB

问题描述 Visula Basic 6.0 中 LenB Visula Basic 6.0 中LenB取得的字节长度是根据什么编码来的?StrConv呢? 解决方案 lenb返回的是字节数,因为vb使用双字节表示,所以lenb("hello")尽管是英文,也返回10 解决方案二: LenB只内存中字符串存储的字节长度 StrConv是字符集转换 VB的编码格式是Unicode编码,Unicode用两个字节表示一个字符. StrConv可以把Unicode转成缺省码页,也就是根据环境决定

Visula Basic 6.0 DLL里面可以打包控件么

问题描述 Visula Basic 6.0 DLL里面可以打包控件么 Visula Basic 6.0 DLL里面可以打包控件么?怎么把OCX打包再EXE或者是DLL文件中?又怎么在程序中进行调用? 解决方案 可以使用installshield来打包. 解决方案二: 如果你想,连视频都能打包进去,至于怎么调用我就不知道了

几个关于Visula Basic语言的字符串类型的问题

问题描述 几个关于Visula Basic语言的字符串类型的问题 VB语言的字符串可以使用ByRef传给C++么?VB语言的字符串相当于C++的BSTR么?VB是uncode么? 解决方案 可以的,BSTR就是COM类型的字符串.

C++里面用到BSTR,Visula Basic 6.0里用StrConv转换存在乱码的问题

问题描述 C++里面用到BSTR,Visula Basic 6.0里用StrConv转换存在乱码的问题 C++里面用到BSTR,Visula Basic 6.0里用StrConv转换存在乱码的问题 解决方案 试试看StrConv(你的字符串,vbFromUnicode)

Visula Basic怎么不通过控件的方式直接调用控件的界面

问题描述 Visula Basic怎么不通过控件的方式直接调用控件的界面 VB6.0通过控件调用界面有个缺点就是没有控件ocx就会报错,程序就无法执行了,能不能不通过调用控件但是调用里面的界面呢? 解决方案 http://blog.sina.com.cn/s/blog_4bd5a8c30100p4w6.html