【发布时间】:2015-02-08 23:59:40
【问题描述】:
我有一个非常基本的问题:是否可以将 int 变量转换为常量,所以我可以静态初始化具有给定长度的数组(没有指针和新函数)。我只是好奇,我知道如何动态地做到这一点。 谢谢
【问题讨论】:
-
不,数组需要在编译时知道它们的大小,在运行时你无法解决这个问题。
-
即使您找到了解决方法,我也怀疑编译器会将其视为可变长度数组以外的任何东西。
-
我在问这个,因为我写的是 CUDA 程序。我想使用共享内存,但不确定是否可以动态分配,动态分配存在一些问题。
-
您可以使用
alloca()在标准C 和C++ 的堆栈上分配动态内存量;检查CUDA是否支持它。请注意,返回的指针的生命周期绑定到调用alloca()的函数,因此当该函数返回时指针变为无效!