我使用下面的代码设置浮点数组的值
#include "math.h"
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
class MathCore
{
public:
MathCore();
virtual ~MathCore( );
bool dosomething ( );
};
和
#include "MathCore.h"
MathCore::MathCore()
{
}
MathCore::~ MathCore()
{
}
bool MathCore::doSomething ( )
{
//-------------------------------------------------
float *xArray;
xArray=(float*)malloc(sizeof(float)*5);
float v=0.1;
xArray[0]=v;
return 1;
}
它始终在
报告EXC_BAD_ACCESS错误xArray[0]=v;
欢迎评论
答案 0 :(得分:1)
假设你想要一个大小为5浮点数组的对象,第一个元素设置为0.1
:
std::vector<float> xArray(5); // contains 5 floats, each set to 0.0f
xArray[0] = 0.1;
如果你真的必须使用指向动态分配数组的原始指针,那么,
float* xArray = new float[5]; // uninitialized elements.
float* xArray = new float[5](); // elements initialized to 0.0f.
xArray[0] = 0.1;
原始指针的更好替代方法可能是
std::unique_ptr<float[]> xArray(new float[5]);
xArray[0] = 0.1;
答案 1 :(得分:0)
你应该真正使用C ++意味着
std::vector<float> xArray;
xArray.push_back(0.1);
现在,当您需要使用该向量调用C库函数时,c库通常需要float*
和size
。你从这个矢量得到这个:
cfunc(&xArray[0], xArray.size());
您获取xArray的第一个元素的地址(所有元素必须在标准的连续块中),size()
返回xArray中的元素数。