我有一个联合(ValueDefinition),其中包含不同数据类型的指针以及创建它的函数。使用 String 可以正常工作:
ValueDefinition CreateValDefString(String value){
ValueDefinition valDef = {.ValueString = new String(value)};
return valDef;
}
但是,当我对例如 uint8_t 执行相同操作时,它会编译,但在运行时出现此错误:
[E][WString.cpp:185] changeBuffer(): realloc failed! Buffer unchanged
这是 uint8_t 的代码:
ValueDefinition CreateValDefUint8(uint8_t value){
ValueDefinition valDef = {.ValueUInt8 = new uint8_t(value)};
return valDef;
}
我究竟做错了什么?我在没有“new”和 malloc 的情况下尝试了它,但我仍然得到同样的错误。
编辑:根据要求,ValueDefinition 的定义:
union ValueDefinition{
bool* ValueBool;
int8_t* ValueInt8;
int16_t* ValueInt16;
int32_t* ValueInt32;
uint8_t* ValueUInt8;
uint16_t* ValueUInt16;
uint32_t* ValueUInt32;
float* ValueFloat;
ulong* ValueULong;
String* ValueString;
};