gpt4 book ai didi

c++ - 使用 alloca 分配内存时转换无效

转载 作者:行者123 更新时间:2023-11-30 00:57:17 30 4
gpt4 key购买 nike

这段代码

#include "alloca.h"

String str = "abc";

unsigned int *i;

void setup() {
Serial.begin(9600);

i = alloca(StringLength() * sizeof(i));

unsigned int j[StringLength() * sizeof(i)];
}

int StringLength() {
return str.length();
}

void loop() {
}

给我以下错误信息:

sketch_dec11f.cpp: In function ‘void setup()’: sketch_dec11f.cpp:14:7: error: invalid conversion from ‘void*’ to ‘unsigned int*’

我做错了什么?

(也用 malloc() 试过了,也没用!)

最佳答案

您绝对不需要 alloca()。这是函数堆栈上的分配,仅在调用期间持续。它允许您拥有在函数返回时消失的动态数组(在 C++ 中,您可以使用 RAII 执行此操作,但在 C 中,alloca 是唯一的方法)。

您只需要在您的分配中进行强制转换。试试 i = (unsigned int *)malloc(StringLength() * sizeof(*i))。注意 sizeof(*i)。那是一个成员的大小:sizeof(i) 是指针的大小,不太可能与里面的内容有关。

关于c++ - 使用 alloca 分配内存时转换无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467009/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com