共享内存 声明为什么必须是常量

想用核函数参数来声明共享内存的大小,编译器说不行,大小必须用常量。这种限制是哪里引起的?另外,如果我想动态的申请共享内存,就要自己先把所有共享内存都申请好了,再用变量来控制访问共享内存的偏移量,这样行么。

(1)因为当前实现就只能如此。如果要具体讨论当前的实现下,为何静态分配的shared memory需要静态的大小,而不能动态(例如定义成可变长度数组),则可能超出了本论坛的讨论范围。

(2)关于您说的动态分配内存,您完全可以这样做。以及您还可以综合做,例如您有3个数组,分别是10B, 80B和不定大小,除了您总共分配总大小,然后10B给一个,80B给一个,不定大小是剩下的第三个数组外,您还可以直接将前2个定义成静态的,而最终的不定的第三个数组定义成动态的。这也是可以的。

感谢来访。