假设我有一个 C 函数:
void myFunction(..., int nObs){
int myVec[nObs] ;
...
}
myVec 是动态分配的吗?每当调用 myFunction 时,nObs 都不是恒定的。我问这个问题是因为我目前正在用这种习惯进行编程,而一位 friend 的程序出现错误,罪魁祸首是他没有动态分配他的数组。我想知道我的编程习惯(如上例中的初始化)是否是一个安全的习惯。
谢谢。
最佳答案
为了回答您的问题,它不被视为动态分配,因为它位于堆栈中。在允许这样做之前,您可以在某些平台上使用函数 alloca
在堆栈上模拟相同的可变长度分配,但是那不可移植。这是(如果您为 C99 编程)。
关于C 函数 : is this dynamic allocation? 用变化的长度初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2316401/