gpt4 book ai didi

c - 地址上的二维 float 组

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:11 25 4
gpt4 key购买 nike

我正在尝试在内存地址上创建一个二维 float 组。这是我的:

float ** adresse = (float**)(0xC0000001);
uint8_t dim1Size = 16;
uint16_t dim2Size = 11;
for(int i = 0; i < dim1Size; i++)
{
adresse[i] = (float*)(adresse+dim1Size*sizeof(float*) + dim2Size*sizeof(float));
}

我在这条线上“飞出”了:

adresse[i] = (float*)(adresse+dim1Size*sizeof(float*) + dim2Size*sizeof(float));

所以我做错了什么。你能告诉我哪里出了问题吗?为什么?

最佳答案

代码做了很多假设。

整数到指针的转换是实现定义的:

(float**)(0xC0000001);

结果指针必须与引用类型正确对齐。以 1 结尾的地址可能没有正确对齐 float* 类型。

一旦你解决了这个问题,你需要有两个分配,一个用于浮点类型指针数组,另一个用于浮点类型的二维数组。

float ** adresse = //aligned and valid memory of size sizeof( float* ) * dim1Size
float* objects = //aligned and valid memory of size sizeof( float ) * dim1Size * dim2Size

然后遍历指针数组:

for( size_t i = 0; i < dim1Size; i++)
{
adresse[i] = objects + dim1Size;
}

关于c - 地址上的二维 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com