我有一个这样的方法声明:
void createProgram(int32_t dev, int32_t* pixelId, int32_t* vertexId)
如何发现 pixelId 和 vertexId 数组中的元素数量?
例如,我试图找出包含的元素数量:
sizeof(pixelId)/sizeof(int32_t)
但这不是解决方案, sizeof(pixelId) 返回指针的大小。
还有其他解决方案吗?
谢谢
根据您的标题,我认为pixelId
您想了解在andvertexId
参数中传递了多少元素。简而言之,你不能——指针所做的只是说在内存中的那个点上有int32_t
',而不是多少。您要么必须:
std::vector
来传递它们char*
,这是有效的,因为零字节不是有效的 ASCII 或 Unicode 字符。如果不使用这三种方法之一,指针只是一个内存地址和它所指向的数据类型的指示,而不是有多少元素,如果有的话。
你试过:
sizeof(pixelId)/sizeof(int32_t)
因为pixelId
is a int32_t*
,所以它是一个内存指针,根据您是在 32 位还是 64 位操作系统上,它是 4 字节还是 8 字节。sizeof(int32_t)
根据定义是 4 个字节,因此该计算将返回2
或,但不会返回与指针指向的内容1
相关的答案。