use*_*345 5 c++ memory-management
我有一个非常严格和严格的内存限制的问题.我是CPP的极客,我想减少我的内存使用量.请给我一些提示.
我的一个朋友建议在我的结构中使用函数.例如,而不是使用:
struct node{
   int f()
   {}
}
他建议我用:
int f(node x)
{}
这真的有帮助吗?
注意:我的结构有很多副本.
这里有更多信息:
我正在编写某种段树来解决在线评判中的练习问题.我在结构中获得树节点.我的struct有以下变量:
  int start;
  int end;
  bool flag;
  node* left;
  node* right;
内存限制为16 MB,我使用的是16.38 MB.
Mar*_*som 21
我猜你的问题的潜台词,你的大部分内存使用是数据,而不是代码.以下是一些提示:
char而不是int,或者unsigned char如果它是0到255.同样使用int16_t或uint16_t用于-32768..32767和0..65535的范围.vector而不是代替list.使用boost::ptr_vector而不是std::vector包含shared_ptr.小智 5
在我看来,减少内存的最佳方法是考虑算法空间的复杂性,而不是仅仅进行精细的代码优化.重新考虑诸如动态编程表,不必要的副本之类的东西,通常是任何在内存效率方面都有疑问的东西.此外,尝试在不再需要时尽早释放内存资源.