Tag: alloca

返回alloca指针

此代码是否返回对堆栈上分配的变量的无效引用? 或者是什么: void *f(size_t sz) { return alloca(sz); } 或者这是一个由alloca实现/编译器支持处理的特殊情况,如f(alloca(size), alloca(size))会是什么?

alloca完全可以替换吗?

我已经阅读了很多地方, alloca已经过时,不应该使用,而应该使用可变长度数组。 我的问题是: alloca是否可以被可变长度数组完全替换? 在我的特定实例中,我有一些看起来像这样的东西: typedef struct { int *value; size_t size; } some_type; void SomeExternalFunction(some_type); … void foo(){ //What I thought to do some_type bar; bar.value=alloca(sizeof(int)*10); SomeExternalFunction(bar); //what should be done without alloca some_type fizz; int tmp[10]; fizz.value=tmp; SoemExternalFunction(fizz); } 我错过了什么或者这是对alloca的实际好用吗? 另外假设这个例子由于某种原因我想要在堆栈上分配值

alloc,malloc和alloca – 有什么区别?

我的印象是Objective-C中的alloc (当我们调用[anyObject alloc]实际上是在实现C函数malloc并且内存在堆中分配,但无法找到答案)。 此外,在搜索alloc ,我发现alloca在堆栈中分配内存。 如果我没有错, alloc在堆中分配内存来创建对象。 那么, alloc和malloc (和alloca )有什么区别? 任何人都可以总结一下吗?

在哪些情况下alloca()有用吗?

当你总是可以在堆栈上分配一个足够大的固定大小的缓冲区来满足所有用途时,你为什么要使用alloca()? 这不是一个修辞问题……

alloca(n)和char x 之间有什么区别?

有什么区别 void *bytes = alloca(size); 和 char bytes[size]; //Or to be more precise, char x[size]; void *bytes = x; …其中size是一个在编译时值未知的变量。