查看程序使用内存(不包含运行内存)的方式

看运行内存好像\(\text{Linux}\)好写亿点,但是不会\(\text{Linux}\)

下列数据内存与数据的存储范围为此得出(以int为例):

cout<<sizeof(int)<<"Byte"<<endl;
cout<<numeric_limits<int>::min()<<endl;
cout<<numeric_limits<int>::max()<<endl;

法一是手算内存

数据类型 占用内存
short int 2 Byte
int 4 Byte
long long 8 Byte
float 4 Byte
double 8 Byte
char 1 Byte

long double 本机得是16 Byte。但是查了一下特性啥的,目前没有考场用这个的想法

还有一些容器的测试内存,个人猜测\(\text{sizeof}\)只计算容器内存而不计算容器存储数据内存。容器存储数据类型似乎也不影响内存

容器内存的这个问题或许也印证了pb老师博客里所指的:

image

容器类型 占用内存
string 8 Byte
stack 80 Byte
queue 80 Byte
set 48 Byte
map 48 Byte
unordered_map(C++11only) 56 Byte

原来还要开-std=c++11..

顺带记一下警告-Wall -Wextra -Wconversion

开栈-Wl,--Stack=998244353。后面数字单位\(\text{Byte}\)

吸氧-O2

我记得开\(\text{O2}\)有返回值类型函数不返回会\(\text{RE}\),可得注意一点。

法二是科技(?

编译一下,然后size 文件路径就好了。占用是\(\text{dec}\)那一列,单位\(\text{Byte}\)

image

大概算了一下差不多()

image

不过听教练说过学校神仙\(\text{NOI}\)算了内存依然挂分这样的事情。程序运行依然要花费内存,但是这个花费的量级我还得考究一下....

呜呜,去年要是没\(MLE\)我现在已经退役了(

image

手残开了快\(\text{1}\)\(\text{G}\)

posted @ 2022-09-15 10:10  Akuto_urusu  阅读(57)  评论(0编辑  收藏  举报