【发布时间】:2011-04-05 12:06:41
【问题描述】:
我想将一个浮点缓冲区复制到一个字符(字节)缓冲区,而不为两个单独的缓冲区分配内存。换句话说,我想使用一个缓冲区并就地复制。 问题是,如果我需要一个浮点缓冲区,那么为了将其复制到 char 中,我将需要一个 char* 指针;如果我从 float* 复制到 float* 会很容易,因为我只需为目标和源传递相同的指针。
例如。
void CopyInPlace(float* tar, float* src, int len) {
....
}
CopyInPlace(someBuffer, someBuffer, 2048);
void PackFloatToChar(char* tar, float* src, int len) {
}
????????
我该怎么做?
memcpy 是否复制到位?如果传入相同的指针?
【问题讨论】:
-
原地复制希望达到什么效果?
-
您希望将浮点数转换为字符的格式是什么?如果 char* 的空间需要比 float* 更多的空间怎么办?还是将 float* 转换为 char* 您所需要的?
-
这没有任何意义。 “就地复制”应该是什么意思?如果你只有一个缓冲区,那么你就不能在任何地方复制任何东西。
-
memcpy不允许这样做,但memmove允许源和目标重叠,因此您可以将字节复制到自己的内容中(此评论是开玩笑的。获取您的而是从答案中获得编程建议) -
您可以覆盖输入缓冲区,然后将其重新用作输出。当您需要像在嵌入式设备上那样节省内存时,您可以这样做。我只有 1mb 的内存可以使用。无效 CopyInPlaceMult4(int* tar, int* src, int len) { int* val = src; int* end = src + len-1; for( ; val
标签: c pointers programming-languages type-conversion