2 namedajipai namedajipai 于 2016.03.31 22:26 提问

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

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

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.31 23:20
已采纳

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

pppploi8
pppploi8   2016.03.31 22:38

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!