c++ - 将 std::vector 传递给 C++ 中的函数时的内存分配
问题描述
考虑以下简单示例:
#include <vector>
void func(std::vector<int>* output) {
std::vector<int> temp(10000);
/* ... do work here and fill temp with useful values ... */
// now send the result to main
*output = temp;
}
int main(void) {
std::vector<int> vec;
// func will put useful values in vec
func(&vec);
for(size_t i=0; i<10000; i++)
vec[i] = 3; // just checking to see if I get a memory error
return 0;
}
我曾经认为必须先分配内存vec
才能使用它(例如,通过调用output->resize(10000)
?)。因此,我希望vec
在调用func
for 循环后使用时会出现内存错误,但似乎代码工作得很好。
你能解释一下这种行为吗?此外,这是否是您编写此代码的方式(即,当您需要一个应该填充向量的函数时,也许每次都有不同数量的值,尽管这里是10000
)?(PS。我不想用return
)。
谢谢!
解决方案
推荐阅读
- html - CSS 变换:缩放不对齐重叠的 div
- typescript - 如何从接口类型检查属性是否正确?
- python - 使用动态变量名称,作为函数/方法的参数
- python - SimpleITK 中从 3D 数组构建 2D RGB 图像
- c# - 如何从 Appsettings.json 中获取要在 Startup.cs 中使用的值?
- javascript - 自定义普鲁米销毁逻辑
- python - 什么时候适合使用 Python 类来组织代码?
- credit-card - Elavon Converge Pay - 什么是 ssl_test_mode?
- gcc - 在 MSYS2 中使用 MinGW-64 构建 GLEW 失败 - make: i686-w64-mingw32-ld: Command not found
- php - 有条件显示HTML表格结构时如何避免冗余