c++中动态分配和修改函数的内存
Dynamically allocate and modify memory from function in C++
我想读取一个文件,并分配一个包含读取值的数组,稍后将使用。
这是我得到的:
int main(){
float *values;
somefunction (&values);
values[3]=3; //Works OK but I want to modify it from the other function
}
somefunction(float ** values){
//I read the file here and count the lines
//for the sake of simplicity lets say I got lines=10;
*values = new float[lines]; //Works OK
*values[0]=0; //Works OK because it points to the first or only element
*values[1]=1; //Segmentation Fault
}
为什么可以从主函数中修改新分配的浮点数组,而不是从分配的相同函数中修改,我做错了什么?
我很确定我的语法修改数组是错误的,但我不知道为什么…
更容易阅读…
somefunction(float*& values)
{
values = new float[lines];
values[0] = 0;
values[1] = 1;
}
main()
{
float* values;
somefunction(values);
}
[]
运算符的优先级高于一元*
运算符。因此,*values[1]
与*(values[1])
相同。你需要的是(*values)[1]
,正如@sigfpe在评论中指出的。
更简单:
float* somefunction()
{
float* values = new float[lines];
values[0] = 0;
values[1] = 1;
return values;
}
main()
{
float* values = somefunction();
}
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- 对具有动态分配的内存和析构函数的类对象的引用
- 调用析构函数以释放动态分配的内存
- std::unordered_map析构函数不释放内存?
- 从构造函数内存泄漏引发异常
- C++函数:内存访问次数
- 运算符过载、析构函数内存泄漏
- 测量cpp中的函数内存使用情况
- C++:链表析构函数内存泄漏
- C++图形函数内存泄漏(valgrind在线上没有具体说明)
- 成员函数内存分配堆栈或堆
- 构造函数 - 内存分配失败
- System::字符串到char*函数.内存泄漏
- 使用std::swap的C++函数内存泄漏
- 错误:malloc():排序的比较函数内存损坏
- 函数内存不足-我该怎么办
- c++析构函数内存泄漏
- 将双精度转换为字符串函数-内存问题
- 常量迭代器的矢量构造函数内存分配,seg错误
- c++函数内存对齐