实习冲刺练习 第二十一天
每日一题
最长公共前缀. - 力扣(LeetCode)
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0) return "";//没有字符
string str;//记录公共部分
for(int i = 0;i<strs[0].size();i++){//从左往右遍历第一个字符串
char c = strs[0][i];//记录第i位的字符
str.push_back(c);
for(int j = 1;j<strs.size();j++){//遍历剩下的字符串的第i位字符
if(strs[j][i]!=c||i == strs[j].size()){//如果不相同,或者其中一个字符串先走完结束
str.erase(i);//删除最后一个
return str;//返回公共部分
};
}
}
return str;
}
};
八股
C++函数的返回值在内存中的传递过程
- 简单类型返回值:通过寄存器传递,可能在栈上存储。
- 复杂对象返回值:如果没有使用移动语义或RVO,会通过拷贝构造;如果有使用移动语义,则通过移动构造。
- 动态分配内存的返回值:通常是返回指针,调用者负责内存管理。
什么是虚拟内存,为什么要使用虚拟内存,虚拟内存可能比物理内存大吗
什么是虚拟内存?
虚拟内存(Virtual Memory)是一种计算机内存管理技术,它允许操作系统将程序的内存地址空间映射到物理内存或硬盘存储的空间。换句话说,虚拟内存为每个运行中的程序提供了一个独立的、连续的内存地址空间,尽管物理内存的大小可能远小于程序所需的内存总量。
为什么要使用虚拟内存?
- 内存隔离与保护
- 进程透明性
- 有效利用内存
- 支持多任务处理
- 内存映射文件
虚拟内存可能会比物理内存大,原因在于操作系统使用了一种称为“分页”或“交换”的技术。