vector的push_back一次能压多大的数据?

时间:2021-08-30 04:16:58
我现在定义的一个结构,大小在50K左右,我使用vector.push_back()的时候就出错。而其它地方我同样采用这个方法来压数据都可以,当然其它地方的结构体没这么大?

57 个解决方案

#1


什么错

#2


是不是这结构面有拷贝构造函数 和赋值操作符 不正确类成员.

#3


mark

#4


贴出代码来看看。
vector的push_back对对象的大小没有要求的。
有要求的是对象需要提供拷贝构造函数和与之相关的函数操作。

#5


up

#6


老大你压指针嘛。效率高。

#7


typedef struct MsndSMovieShowTimes_
{
  int nMovieId;
  mxUINT8   nNumberOfShows;
  MsndCommonTime  aTimes[MAX_SHOW_TIMES];
} MsndSMovieShowTimes;

typedef struct MsndMovieGPS_ 
{
   mxFLOAT64 nLatitude;
   mxFLOAT64 nLongitude;
} MsndMovieGPS;

typedef struct MsndSTheater_
{
  MsndMovieGPS Location;
  TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH];
  TCHAR strPhone[MSND_MOVIES_THEATER_PHONE_LENGTH];
  TCHAR strAddress[MSND_MOVIES_THEATER_ADDRESS_LENGTH];
  MsndSMovieShowTimes aShowTimes[MAX_MOVIES_PER_THEATER];
  mxINT32 nNumberOfMovieShowTimes;
  mxFLOAT64 Distance;
} MsndSTheater;


就是MsndSTheater,比较大哈,在PC上跑完全没事,但是在设备上跑就出问题了。

#8


引用 6 楼 yshuise 的回复:
老大你压指针嘛。效率高。


你的方法很好,我已经按照你的方法解决了,但是现在就是想弄清楚问题的存在,毕竟以后还有很多地方都需要用到,谢谢你。

#9


引用 4 楼 ugg 的回复:
贴出代码来看看。 
vector的push_back对对象的大小没有要求的。 
有要求的是对象需要提供拷贝构造函数和与之相关的函数操作。


我就搞不懂,如果真如你所说,为什么PC上就可以正常的跑呢?谢谢了.......

#10


PC和设备的区别可能在于栈大小的问题,
操作系统间可能有区别

#11


如果内存有限的话
push_back的时候可能会失败的说。
push_back的时候保存的是类的副本,需要新申请内存的说。。
不知道说得对不对,有大虾出来赐教一二

#12


应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........

#13


引用 12 楼 jiangzy80 的回复:
应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........

一个指针才4byte阿

#14


你这样测试一下看看。
把你push_back的部分,修改成
声明两个MsndSTheater;对象,测试一下。
MsndSTheater a1;
MsndSTheater a2;
根据你的描述,应该也会出问题。

#15


MARK

#16


引用 13 楼 pony_ml 的回复:
引用 12 楼 jiangzy80 的回复:
应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........ 
 
一个指针才4byte阿

我知道,我的意思是说,push_back同样是动态分配的,而new也是动态分配的内存,为什么new的就行,而push_back就不行呢?难道他们分配空间的地方有区别,一个在栈?一个在堆里?

#17


引用 14 楼 ugg 的回复:
你这样测试一下看看。 
把你push_back的部分,修改成 
声明两个MsndSTheater;对象,测试一下。 
MsndSTheater a1; 
MsndSTheater a2; 
根据你的描述,应该也会出问题。 


同样的效果

#18


高手来说说吧,等着呢

#19


栈溢出!
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。
你一下子搞一个50K的局部变量,当然就挂了。

#20


压对象的话,vector需要连续的内存空间,可能设备上找不到那么大一块连续内存。
但是压指针的话,指针指向的对象就可以随意分布在内存中了。
也有可能是这个原因

#21


我是说压很多个对象的时候

#22


push_back压入的不是栈而是堆。

#23


引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。


那么这个栈的大小应该可以改变吧?我用的是vs2005,我改了还是一样的,这个栈的大小默认的会不会跟内存的大小有关系呢?

难道如楼上几位所说,应该是vector压入的时候要求要连续分配空间,所以造成死机了?也就是说vector的push_back压入的是分配在连续的空间里面的?

#24


upup

#25


引用 23 楼 jiangzy80 的回复:
引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。 
 

那么这个栈的大小应该可以改变吧?我用的是vs2005,我改了还是一样的,这个栈的大小默认的会不会跟内存的大小有关系呢? 

难道如楼上几位所说,应该是vector压入的时候要求要连续分配空间,所以造成死机了?也就是说vector的push_back压入的是分配在连续的空间里面的? 


是在连续内存上存储的。vector是顺序存储结构。

#26


但是现在我改成静态数组了,居然没问题了,同样还是连续分配空间的啊。

#27


mark, 支持一下, 高手请出招!

#28


静态数据不在栈上

#29


引用 1 楼 jieao111 的回复:
什么错
问问题不能浪费别人时间.

#30


study

#31


栈上50K。。

不知道你用的设备是不是指MOBILE设备?
如果是的话,差不多就是栈溢出了~
(LZ你用的设备,SDK等最好说明一下~)

建议那一段push_back的代码拉出来看看~(因为你上面说即使分割开依然出错?)

symbian设备上默认的栈一般是8K,最大栈为80K,默认堆4K-1M。
可以通过设置EPOCSTACKSIZE和EPOCHEAPSIZE来进行修改的。

wm的话就是58K(记得是这样)

其他的平台我并不熟悉,请达人补充~


其实这都需要看具体设备,WM还比较统一,symbian的话就看厂商心情了(一般都至少支持默认的大小)。
另外STL在MOBILE设备上一般不作为首选,其拷贝赋值的做法效率是比较低的~

PS: LS某位说用指针~ 是值得推荐的做法~

#32


确实应该压指针

然后就是注意你的类要实现拷贝构造和赋值

楼主是出错在哪里,压入的数据不完整还是怎样?

#33


typedef struct MsndSMovieShowTimes_ 

  int nMovieId; 
  mxUINT8  nNumberOfShows; 
  MsndCommonTime  aTimes[MAX_SHOW_TIMES]; 
} MsndSMovieShowTimes; 

typedef struct MsndMovieGPS_ 

  mxFLOAT64 nLatitude; 
  mxFLOAT64 nLongitude; 
} MsndMovieGPS; 

typedef struct MsndSTheater_ 

  MsndMovieGPS Location; 
  TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH]; 
  TCHAR strPhone[MSND_MOVIES_THEATER_PHONE_LENGTH]; 
  TCHAR strAddress[MSND_MOVIES_THEATER_ADDRESS_LENGTH]; 
  MsndSMovieShowTimes aShowTimes[MAX_MOVIES_PER_THEATER]; 
  mxINT32 nNumberOfMovieShowTimes; 
  mxFLOAT64 Distance; 
} MsndSTheater; 


#define MsndSTheaters std::vector<MsndSTheater *>
MsndSMovies m_mDataMovie
在函数中定义一个MsndSTheater,赋值后采用MsndSTheaters.push_back(mDataMovie)就出错哈。改成静态数组或这压指针就正常了。

我用的是wence5.0系统,内存是128M的,不知道原因了啊

#34


引用 33 楼 jiangzy80 的回复:
typedef struct MsndSMovieShowTimes_
{
int nMovieId;
mxUINT8  nNumberOfShows;
MsndCommonTime  aTimes[MAX_SHOW_TIMES];
} MsndSMovieShowTimes;

typedef struct MsndMovieGPS_
{
mxFLOAT64 nLatitude;
mxFLOAT64 nLongitude;
} MsndMovieGPS;

typedef struct MsndSTheater_
{
MsndMovieGPS Location;
TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH];
TCHAR strPhone[MSND_MOVIES_THEATER_PHONE…

最大的可能就是你的复制函数的没有实现,是用编译器默认的所以就错了。对于简单的内型编译器还能应付,
对视本事对象型或是指针的出错可能性很大。

#35


对视本事对象型或是指针的出错可能性很大。
===========
对于复杂对象和指针出错的可能性很大。

#36


引用 35 楼 yshuise 的回复:
对视本事对象型或是指针的出错可能性很大。 
=========== 
对于复杂对象和指针出错的可能性很大。


你们的意思就是说,如果定义的结构体太过于复杂,就不能采用vector来直接存放了,只能通过压指针的方式了?但是WinCE系统好像没有内存管理机制,最好不要用new来动态分配内存的啊?不知道我说的对不对哈,请指教。

#37


mark

#38


引用 36 楼 jiangzy80 的回复:
引用 35 楼 yshuise 的回复:
对视本事对象型或是指针的出错可能性很大。
===========
对于复杂对象和指针出错的可能性很大。


你们的意思就是说,如果定义的结构体太过于复杂,就不能采用vector来直接存放了,只能通过压指针的方式了?但是WinCE系统好像没有内存管理机制,最好不要用new来动态分配内存的啊?不知道我说的对不对哈,请指教。

不是,我的意思是指结构体里面有自定义对象,而这个自定义对象里面有其他对象指针,但是有没有写赋值构造函数函数,出错是一定的。对于pod不会错误。

#39


引用 6 楼 yshuise 的回复:
老大你压指针嘛。效率高。

这个是个好的方法,
减少拷贝,时间空间,都是一大节约。

#40


这个讨论不错,mark 先

#41


mark

#42


mark

#43


LZ压指针好一些啊,效率高啊

#44


老大你压指针嘛
-----------
弱问一声:压指针怎么用?和直接push_back()有什么不一样,哪位高人举例说明一下?

#45


引用 44 楼 asksgp 的回复:
老大你压指针嘛 
----------- 
弱问一声:压指针怎么用?和直接push_back()有什么不一样,哪位高人举例说明一下?

直接压需要调用元素的拷贝构造函数,因此元素越复杂,效率就越低。压指针就没有这个问题,可以大大提高效率。

#46


引用 19 楼 taodm 的回复:
栈溢出!
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。
你一下子搞一个50K的局部变量,当然就挂了。


64byte 栈的路过。

#47


最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。

#48


引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。


同意!严重同意的说。

#49


引用 47 楼 harry330 的回复:
最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。


我本来改成了压指针的,但是现在又让我改成静态数组了。老大说不让压指针,说是wince下系统自己没有内存管理机制,说容易造成内存碎片,不知道有没有这个问题存在?

#50


引用 49 楼 jiangzy80 的回复:
引用 47 楼 harry330 的回复:
最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。


我本来改成了压指针的,但是现在又让我改成静态数组了。老大说不让压指针,说是wince下系统自己没有内存管理机制,说容易造成内存碎片,不知道有没有这个问题存在?

你老大是谁?vector内存是由stl管理的,本身就是为了解决内存碎片问题而设计的内存池。唉,你老大!

#1


什么错

#2


是不是这结构面有拷贝构造函数 和赋值操作符 不正确类成员.

#3


mark

#4


贴出代码来看看。
vector的push_back对对象的大小没有要求的。
有要求的是对象需要提供拷贝构造函数和与之相关的函数操作。

#5


up

#6


老大你压指针嘛。效率高。

#7


typedef struct MsndSMovieShowTimes_
{
  int nMovieId;
  mxUINT8   nNumberOfShows;
  MsndCommonTime  aTimes[MAX_SHOW_TIMES];
} MsndSMovieShowTimes;

typedef struct MsndMovieGPS_ 
{
   mxFLOAT64 nLatitude;
   mxFLOAT64 nLongitude;
} MsndMovieGPS;

typedef struct MsndSTheater_
{
  MsndMovieGPS Location;
  TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH];
  TCHAR strPhone[MSND_MOVIES_THEATER_PHONE_LENGTH];
  TCHAR strAddress[MSND_MOVIES_THEATER_ADDRESS_LENGTH];
  MsndSMovieShowTimes aShowTimes[MAX_MOVIES_PER_THEATER];
  mxINT32 nNumberOfMovieShowTimes;
  mxFLOAT64 Distance;
} MsndSTheater;


就是MsndSTheater,比较大哈,在PC上跑完全没事,但是在设备上跑就出问题了。

#8


引用 6 楼 yshuise 的回复:
老大你压指针嘛。效率高。


你的方法很好,我已经按照你的方法解决了,但是现在就是想弄清楚问题的存在,毕竟以后还有很多地方都需要用到,谢谢你。

#9


引用 4 楼 ugg 的回复:
贴出代码来看看。 
vector的push_back对对象的大小没有要求的。 
有要求的是对象需要提供拷贝构造函数和与之相关的函数操作。


我就搞不懂,如果真如你所说,为什么PC上就可以正常的跑呢?谢谢了.......

#10


PC和设备的区别可能在于栈大小的问题,
操作系统间可能有区别

#11


如果内存有限的话
push_back的时候可能会失败的说。
push_back的时候保存的是类的副本,需要新申请内存的说。。
不知道说得对不对,有大虾出来赐教一二

#12


应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........

#13


引用 12 楼 jiangzy80 的回复:
应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........

一个指针才4byte阿

#14


你这样测试一下看看。
把你push_back的部分,修改成
声明两个MsndSTheater;对象,测试一下。
MsndSTheater a1;
MsndSTheater a2;
根据你的描述,应该也会出问题。

#15


MARK

#16


引用 13 楼 pony_ml 的回复:
引用 12 楼 jiangzy80 的回复:
应该不是内存用完的原因哈(因为改成压指针就可以了,同样要用new来申请内存啊,跟直接压有什么区别呢?),怎么回事呢?难道push_back是分配到栈里面的?绝对不可能吧,因此我才提出是不是对压入的大小有限制或是其它某些问题,望大家都来说说啊,特别是高手,因为这个在应用中太重要了........ 
 
一个指针才4byte阿

我知道,我的意思是说,push_back同样是动态分配的,而new也是动态分配的内存,为什么new的就行,而push_back就不行呢?难道他们分配空间的地方有区别,一个在栈?一个在堆里?

#17


引用 14 楼 ugg 的回复:
你这样测试一下看看。 
把你push_back的部分,修改成 
声明两个MsndSTheater;对象,测试一下。 
MsndSTheater a1; 
MsndSTheater a2; 
根据你的描述,应该也会出问题。 


同样的效果

#18


高手来说说吧,等着呢

#19


栈溢出!
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。
你一下子搞一个50K的局部变量,当然就挂了。

#20


压对象的话,vector需要连续的内存空间,可能设备上找不到那么大一块连续内存。
但是压指针的话,指针指向的对象就可以随意分布在内存中了。
也有可能是这个原因

#21


我是说压很多个对象的时候

#22


push_back压入的不是栈而是堆。

#23


引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。


那么这个栈的大小应该可以改变吧?我用的是vs2005,我改了还是一样的,这个栈的大小默认的会不会跟内存的大小有关系呢?

难道如楼上几位所说,应该是vector压入的时候要求要连续分配空间,所以造成死机了?也就是说vector的push_back压入的是分配在连续的空间里面的?

#24


upup

#25


引用 23 楼 jiangzy80 的回复:
引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。 
 

那么这个栈的大小应该可以改变吧?我用的是vs2005,我改了还是一样的,这个栈的大小默认的会不会跟内存的大小有关系呢? 

难道如楼上几位所说,应该是vector压入的时候要求要连续分配空间,所以造成死机了?也就是说vector的push_back压入的是分配在连续的空间里面的? 


是在连续内存上存储的。vector是顺序存储结构。

#26


但是现在我改成静态数组了,居然没问题了,同样还是连续分配空间的啊。

#27


mark, 支持一下, 高手请出招!

#28


静态数据不在栈上

#29


引用 1 楼 jieao111 的回复:
什么错
问问题不能浪费别人时间.

#30


study

#31


栈上50K。。

不知道你用的设备是不是指MOBILE设备?
如果是的话,差不多就是栈溢出了~
(LZ你用的设备,SDK等最好说明一下~)

建议那一段push_back的代码拉出来看看~(因为你上面说即使分割开依然出错?)

symbian设备上默认的栈一般是8K,最大栈为80K,默认堆4K-1M。
可以通过设置EPOCSTACKSIZE和EPOCHEAPSIZE来进行修改的。

wm的话就是58K(记得是这样)

其他的平台我并不熟悉,请达人补充~


其实这都需要看具体设备,WM还比较统一,symbian的话就看厂商心情了(一般都至少支持默认的大小)。
另外STL在MOBILE设备上一般不作为首选,其拷贝赋值的做法效率是比较低的~

PS: LS某位说用指针~ 是值得推荐的做法~

#32


确实应该压指针

然后就是注意你的类要实现拷贝构造和赋值

楼主是出错在哪里,压入的数据不完整还是怎样?

#33


typedef struct MsndSMovieShowTimes_ 

  int nMovieId; 
  mxUINT8  nNumberOfShows; 
  MsndCommonTime  aTimes[MAX_SHOW_TIMES]; 
} MsndSMovieShowTimes; 

typedef struct MsndMovieGPS_ 

  mxFLOAT64 nLatitude; 
  mxFLOAT64 nLongitude; 
} MsndMovieGPS; 

typedef struct MsndSTheater_ 

  MsndMovieGPS Location; 
  TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH]; 
  TCHAR strPhone[MSND_MOVIES_THEATER_PHONE_LENGTH]; 
  TCHAR strAddress[MSND_MOVIES_THEATER_ADDRESS_LENGTH]; 
  MsndSMovieShowTimes aShowTimes[MAX_MOVIES_PER_THEATER]; 
  mxINT32 nNumberOfMovieShowTimes; 
  mxFLOAT64 Distance; 
} MsndSTheater; 


#define MsndSTheaters std::vector<MsndSTheater *>
MsndSMovies m_mDataMovie
在函数中定义一个MsndSTheater,赋值后采用MsndSTheaters.push_back(mDataMovie)就出错哈。改成静态数组或这压指针就正常了。

我用的是wence5.0系统,内存是128M的,不知道原因了啊

#34


引用 33 楼 jiangzy80 的回复:
typedef struct MsndSMovieShowTimes_
{
int nMovieId;
mxUINT8  nNumberOfShows;
MsndCommonTime  aTimes[MAX_SHOW_TIMES];
} MsndSMovieShowTimes;

typedef struct MsndMovieGPS_
{
mxFLOAT64 nLatitude;
mxFLOAT64 nLongitude;
} MsndMovieGPS;

typedef struct MsndSTheater_
{
MsndMovieGPS Location;
TCHAR strTheaterName[MSND_MOVIES_THEATER_NAME_LENGTH];
TCHAR strPhone[MSND_MOVIES_THEATER_PHONE…

最大的可能就是你的复制函数的没有实现,是用编译器默认的所以就错了。对于简单的内型编译器还能应付,
对视本事对象型或是指针的出错可能性很大。

#35


对视本事对象型或是指针的出错可能性很大。
===========
对于复杂对象和指针出错的可能性很大。

#36


引用 35 楼 yshuise 的回复:
对视本事对象型或是指针的出错可能性很大。 
=========== 
对于复杂对象和指针出错的可能性很大。


你们的意思就是说,如果定义的结构体太过于复杂,就不能采用vector来直接存放了,只能通过压指针的方式了?但是WinCE系统好像没有内存管理机制,最好不要用new来动态分配内存的啊?不知道我说的对不对哈,请指教。

#37


mark

#38


引用 36 楼 jiangzy80 的回复:
引用 35 楼 yshuise 的回复:
对视本事对象型或是指针的出错可能性很大。
===========
对于复杂对象和指针出错的可能性很大。


你们的意思就是说,如果定义的结构体太过于复杂,就不能采用vector来直接存放了,只能通过压指针的方式了?但是WinCE系统好像没有内存管理机制,最好不要用new来动态分配内存的啊?不知道我说的对不对哈,请指教。

不是,我的意思是指结构体里面有自定义对象,而这个自定义对象里面有其他对象指针,但是有没有写赋值构造函数函数,出错是一定的。对于pod不会错误。

#39


引用 6 楼 yshuise 的回复:
老大你压指针嘛。效率高。

这个是个好的方法,
减少拷贝,时间空间,都是一大节约。

#40


这个讨论不错,mark 先

#41


mark

#42


mark

#43


LZ压指针好一些啊,效率高啊

#44


老大你压指针嘛
-----------
弱问一声:压指针怎么用?和直接push_back()有什么不一样,哪位高人举例说明一下?

#45


引用 44 楼 asksgp 的回复:
老大你压指针嘛 
----------- 
弱问一声:压指针怎么用?和直接push_back()有什么不一样,哪位高人举例说明一下?

直接压需要调用元素的拷贝构造函数,因此元素越复杂,效率就越低。压指针就没有这个问题,可以大大提高效率。

#46


引用 19 楼 taodm 的回复:
栈溢出!
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。
你一下子搞一个50K的局部变量,当然就挂了。


64byte 栈的路过。

#47


最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。

#48


引用 19 楼 taodm 的回复:
栈溢出! 
windows是默认1M。嵌入系统一般栈默认就8~64K,甚至1K的都有。 
你一下子搞一个50K的局部变量,当然就挂了。


同意!严重同意的说。

#49


引用 47 楼 harry330 的回复:
最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。


我本来改成了压指针的,但是现在又让我改成静态数组了。老大说不让压指针,说是wince下系统自己没有内存管理机制,说容易造成内存碎片,不知道有没有这个问题存在?

#50


引用 49 楼 jiangzy80 的回复:
引用 47 楼 harry330 的回复:
最好别压大的对象,用指针替换,效率高。。不过我还是觉得压大对象不会出错,是你代码问题。


我本来改成了压指针的,但是现在又让我改成静态数组了。老大说不让压指针,说是wince下系统自己没有内存管理机制,说容易造成内存碎片,不知道有没有这个问题存在?

你老大是谁?vector内存是由stl管理的,本身就是为了解决内存碎片问题而设计的内存池。唉,你老大!