一个关于vector的奇怪问题

C、C++和Java语言
回复
cxdream
帖子: 30
注册时间: 2006-05-26 13:22
送出感谢: 0
接收感谢: 0

一个关于vector的奇怪问题

#1

帖子 cxdream » 2007-12-22 19:10

一个在ubuntu5.10(非虚拟机)下编写的运行正确的c++代码,放到ubuntu7.10(运行在VMware虚拟机中)中运行时出错:
经过GDB详细检测发现是在调用一个函数a时出错:

void a(char *fname, vector<element_type> &T)
{
......

}
......
a(fname,T);
.......

在ubuntu5.10下调用a(fname,T)后的结果是正确的,但在ubuntu7.10下调用a(fname, T)后发现T不是原来那个T了,T.size()成了一个非常大的数59734951,而且T和fname的地址也发生了变化(而在ubuntu5.10下T和fname的地址在调用a(fname,T)前后都是不变的),。

百思不得其解!请问大虾这个问题何解?

谢谢!
上次由 cxdream 在 2007-12-22 23:41,总共编辑 1 次。
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26
送出感谢: 0
接收感谢: 1 次

#2

帖子 windwiny » 2007-12-22 20:23

你说的是直接复制二进制文件过去执行?


升级了库不保证二进制兼容
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26
送出感谢: 0
接收感谢: 1 次

#3

帖子 windwiny » 2007-12-22 20:31

重复了
上次由 windwiny 在 2007-12-22 21:21,总共编辑 1 次。
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26
送出感谢: 0
接收感谢: 1 次

#4

帖子 windwiny » 2007-12-22 20:33

重复了
cxdream
帖子: 30
注册时间: 2006-05-26 13:22
送出感谢: 0
接收感谢: 0

#5

帖子 cxdream » 2007-12-22 21:37

windwiny 写了:你说的是直接复制二进制文件过去执行?
----------------------------------------------------------------
no! 是把源代码(cpp)在新系统下重新编译后执行。

升级了库不保证二进制兼容
icosagon
帖子: 55
注册时间: 2007-01-22 10:22
送出感谢: 0
接收感谢: 0

#6

帖子 icosagon » 2007-12-23 21:32

你贴的东西太少了
回复

回到 “C/C++/Java”