公司电脑跑了2台虚拟机(16.04+20.04)有时候切换会出现网络图标丢失|共享文件夹识别不存在
网络图标丢失|网络恢复
- network.sh
#!/bin/bash
sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start
- 执行一下脚本就好了
~$ ./network.sh
共享文件夹恢复
- share.sh
#!/bin/bash
sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other -o uid=1000
- 执行一下脚本就好了
~$ ./share.sh
- 我也不知道怎么回事,就先这样吧
参考:C/C++内存分布
1、malloc/free和new/delete的区别
- 共同点:
都是从堆上申请空间,并且需要用户手动释放
- 不同点:
malloc和free是函数,new和delete是操作符
malloc申请的空间不会初始化,new可以初始化
malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可
malloc的返回值为void*, 在使用时必须强转,new不需要,因为new后跟的是空间的类型
malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需要捕获异常
申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理
2、如何一次在堆上申请4G的内存
对于32位的栈来说虚拟地址空间有2个G的空间大小
对于64位的栈来说虚拟地址空间的空间大小是非常大的
扫描二维码关注公众号,回复: 14960869 查看本文章
示例:
// 将程序编译成x64的进程,运行下面的程序
#include <iostream>
using namespace std;
int main()
{
void* p = new char[0xfffffffful];
cout << "new:" << p << endl;
return 0;
}
1G = 2^30 Bytes
ul:为无符号长整型
0xffff ffff
= 4294967295
(4294967295+1) / 2^30 = 4 G
0x7FFFFFFF
= 2147483647
(2147483647+1) / 2^30 = 2 G
-
平台vs2019x32:
-
平台vs2019x64: