堆和栈在操作系统的底层实现
堆和栈的区别 堆是可用于动态分配的内存区域,由程序员手动管理(或是垃圾回收机制管理)。栈用于管理函数调用,局部变量等的高效内存区域,由操作系统自动管理。 32位系统中,进程的虚拟内存空间分布如下,栈从高地址向低地址延伸,堆从低地址向高地址分配。 栈在操作系统的底层实现: 1、线程创建的时候,操作系统将为其分配1MB的栈空间(Windows系统默认)…
|
116
|
|
853 字
|
4 分钟
浅拷贝与深拷贝
个人总结:用类的一个对象去初始化另一个对象时会调用拷贝构造函数,浅拷贝直接复制值,深拷贝需要单独分配一块内存然后再将内容复制过去。自定义结构体或类当中的默认拷贝构造函数和赋值运算符为浅拷贝,如果存在指针变量则只会复制指针的值,而不会复制指针所指向的内存,这会导致两个问题: 1、修改一个指针变量指向的内存,会导致另一个指针变量指向这块内存也发生修改,…
|
100
|
|
1448 字
|
7 分钟
解决C++求最大公约数,最小公倍数报错
以前偷懒没解决这个问题,导致我每次做题都要死背那个欧几里得算法 1、C++14 中可以用<algorithm>中的 std::__gcd(a,b) 函数来求最大公约数 2、C++17,我们可以使用 <numeric> 头中的 std::gcd 与 std::lcm 来求最大公约数和最小公倍数 3、g++有 std::__gcd(a,b)…
|
437
|
|
133 字
|
1 分钟内
解决C++ filesystem 迭代器试图访问高权限文件夹报错问题
使用filesystem迭代器遍历C盘时程序报错退出。filesystem error: cannot increment recursive directory iterator: Invalid argument 起初以为是什么中文路径或者特殊符号在作妖,排查后发现不是。之后尝试遍历其它目录全部正常,于是怀疑是C盘权限问题。询问GPT报错原因,…
|
499
|
|
728 字
|
4 分钟
解决C++中文编码处理问题
可能是被其他语言惯坏了,以前压根没有关注过中文编码问题,最多也就是扒网页的时候编码不对导致乱码,然后自己转换一下。C++中文处理问题属实是给我整清醒了。 先来看看这段代码有什么问题: std::cout << "使用提示:" << std::endl; std::cout << "1、访问高权限文件夹会报错退出"…
|
373
|
|
782 字
|
4 分钟