V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnbatch  ›  全部回复第 24 页 / 共 66 页
回复总数  1319
1 ... 20  21  22  23  24  25  26  27  28  29 ... 66  
用手摸一下电脑外壳,感受下热量,有可能是机器内部温度过高

不要指望联想的塑料壳能够快速散热

如果是在盒盖的情况下开着电脑,是会进一步阻碍散热的。
在空调房内,我在屏幕翻起的情况下用 Thinkpad 内置键盘打字,都能感受到热量从键盘出散发出来(此时 CPU 占用率才 3%~8%),手心微微出汗,更不用说盒盖的情况了

瞬间产生的热量如果不能短时间散发出去(塑料壳,肯定快不了),那就肯定会风扇狂转一段时间才能降下来

不安装驱动、风扇可以很安静,我个人猜测,可能因为部份硬件未启用所以发热没那么大;安装完驱动后全部启用了,热量就上来了
@lsry
那我换个写法

千分位分隔:
24 Bytes ×1'000'000'000 = 24'000'000'000 Bytes = 23437500 KiB = 22888.18359375 MiB = 22.35174179077148 GiB

One billion ,即十亿

万分位分隔:
24 Bytes ×10'0000'0000 = 240'0000'0000 Bytes = 23437500 KiB = 22888.18359375 MiB = 22.35174179077148 GiB
不知道 OP 的系统版本是什么,我用自己的台式机试了下并没有 OOM ,正常运行、正常退出。
我台式机安装的 Linux 系统比较小众,是 OpenMandriva ,版本号 16.0.6-3 ,编译器是 clang 16.0.6

同时我还开着 KDE System Monitor ,观察到测试时最高内存占用会升到 25G 左右

C++代码如下:

#include <iostream>
#include <vector>

constexpr size_t DEVLENGHT = 1000000000ULL;

class Dev
{
int a;
int b;
int c;
int d;
int e;
int f;
public:
Dev() : a(0), b(0), c(0), d(0), e(0), f(0) {}
};

int main()
{
std::vector<Dev> allDevs;
for(std::size_t i = 0 ; i < DEVLENGHT ; ++i)
{
try
{
allDevs.push_back(Dev());
}
catch (std::exception &ex)
{
std::cout << ex.what() << std::endl;
std::cout << i << std::endl;
break;
}
}
}
@lsry 应该是 22.3G 吧

24 Bytes ×10'0000'0000 = 240'0000'0000 Bytes = 23437500 KiB = 22888.18359375 MiB = 22.35174179077148 GiB
281 天前
回复了 xuelang 创建的主题 C++ C++ 链接符号决议 -- 自以为懂了,结果...
说实话,既然都用 C++了,那就直接用 namespace 分隔开嘛,何必这样搞成个歧义二进制折磨自己
@privater 刚想到有个地方的人确实可以同时做到这些:体育学院教授
281 天前
回复了 xiaotianhu 创建的主题 C++ C++反直觉的地方好多,好痛苦
O 是否 P 从未碰过 C 系列语言?如果是,那么这不是反直觉,而是与你习惯不同

先说 include 头文件,虽然办法是古早了点(来自于 C 语言),但换成其他语言也得 using 、import 呀,哪怕是语言内置的同样都要导入,比如 C# 的 List<T>(位于 System.Collections.Generic )、Java 的 List<E>(位于 java.util ),尽管大多数时候 IDE 已经帮忙写了导入语句,但不代表不需要导入

class 声明需要加分号,很简单,因为 C++的 class 就是基于 struct 的。

不想用头文件的话,可以试试 C++20 开始支持的 modules 特性(模块),虽然支持的编译器并不够广泛。

构造函数和析构函数……OP 果真没接触过 C# 和 Java 吗?构造函数同样存在于 C# 和 Java 当中,这没什么好奇怪的吧。顶多就是 C++的构造函数种类比较多。
至于析构函数,C# 甚至有两个呢(一个~开头,跟 C++ 一样;还有一个是 Dispose ),同时还存在于许多语言当中,不明白这有什么好奇怪的。

区分定义和声明,好处体现在需要隐藏细节的时候,例如需要发布闭源 SDK 的话,这个特点很有用,只需要把头文件和二进制包分发出去就行了,不用把完整源码交给对方。
当然啦,实际上完全可以全都写在头文件内的,Github 有许多 header-only 的库就是这么干的。

const 的话题,昨天刚好有人提到: /t/974941
这个可以进去谈一谈

区分引用和指针其实很方便呀,一来可以避免出现多级指针的次数,二来配合模板可以原样转发入参。
我个人是尽量使用引用
281 天前
回复了 dropice7777777 创建的主题 健康 大伙儿这两天喉咙痛吗
过敏性鼻炎?试试“氯雷他定”,口服片剂。

买药的时候要注意,不要买糖浆版本,那是儿科用的
281 天前
回复了 hokman 创建的主题 程序员 win10 的强制更新实在是太可恶了
哪有那么复杂,直接编辑组策略就行了:
https://zhuanlan.zhihu.com/p/63921459

除了永久关闭更新,还可以自己配置如何更新,比如设置成只提示不安装( 2-通知下载和自动安装),这样 Win10 就无法强制更新了

不过话又说回来,公司电脑一般都是有 Active Directory 的吧,Windows 更新这种事应该由公司 IT 部门统一部署呀
282 天前
回复了 LuckyPocketWatch 创建的主题 C++ 如何判断一个 double 有几位?
那就 sizeof 一下看看占多少个字节
282 天前
回复了 iqoo 创建的主题 C++ C++ 用尽可能多的 const 是好风格吗?
喜欢加 const 那就加,无可厚非

虽然我个人不喜欢动不动就 const
看程序用途而定

对于跨平台程序,我只测自己想测的平台,其中就有自己也用的平台。
通常我只测 Windows + BSD ,正式发布前再测 Linux 。至于 macos ,我连苹果电脑都没有,没法测试。

如果是 Client / Server 互联的程序,在功能稳定前我个人更偏向于每个版本都不相互兼容,如果恰好有兼容,那只是走运。
稳定后,可以考虑保证小版本之间兼容。

如果是生存存档的程序,那只需保持能够正确打开、保存存档文件就够了。
最佳方案是使用 IPv6 直连

如果仍然想用 IPv4 ,有个折衷的办法,套一层 udphop: /t/898299
虽然这个工具原本的用途是为了避开 QoS ,但其实对于 OP 这种情况也能用——首先在服务端打洞(已自带打洞选项),然后客户端连过去,只要隧道内能够一直保持有流量(哪怕 1KB/s 都可以)、两边的网络都不是同时换 IP 的话,那么这条连接就可以一直保持畅通
284 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@haohaolee OP 贴出来的报错明显是编译期警告(连报错都不是),一看就知道不是 runtime 报错
284 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
OP 把系统版本、编译器版本一起发出来吧

我用 GCC 10.2.1 (Debian 11)、GCC 13.2.1 (Fedora 38)和 Clang 14.0.5 (FreeBSD 13.2)都没遇到 OP 主贴图 3 的情况
284 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
@cnbatch 补充一条,无论是以 C 语言还是 C++来编译,同样都没报错
其实没什么好不好的,全凭作者喜好而定
284 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
简单写了一小段

#include <stdio.h>

int main()
{
char str[30] = "https://www.v2ex.com/t/974343";
printf("sizeof str: %d\n", (int)sizeof(str));
printf("%s\n", str);
}


无论 GCC 还是 Clang ,编译和运行都没报错

编译的命令行:cc -fsanitize=address
GCC 版本(运行在 Debian 11 ):10.2.1
Clang 版本(运行在 FreeBSD 13.2 ):14.0.5
284 天前
回复了 zzzkkk 创建的主题 C++ fsantinize 弱智
人眼数很容易数错的,对于比较长的字符串,最好还是写成
char s[] = "这是字符串"
中括号内不写任何数字

如果想知道 s 数组有多长,那就 sizeof(s)

以 14 楼的图为例,把 s[31]的数字去掉,改成 s[],接着下面一行加一句
printf("sizeof s: %d\n", (int)sizeof(s));
就可以准确知道实际大小
原来先前的做法是把程序放在用户账户目录?那肯定啦

别说 RemoteApp 了,就算是原地 RunAs (以其他用户身份运行),一样会出错

除了放在 Program Files ,其实还可以放在 C:\Users\Public ,这里也是各个用户都有访问权限的,适合无须安装的绿色软件
1 ... 20  21  22  23  24  25  26  27  28  29 ... 66  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1246 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 18:00 · PVG 02:00 · LAX 11:00 · JFK 14:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.