memcpy / memmove的奇怪行为
我有一个问题,memcpy / memmove改变了
struct FOO foo
的指针,它既不是src也不是函数的目的地。以下是gdb输出:
在memmove(y,y_temp,size_y);
之前:
(gdb) p y
$38 = 0xbff7a2e0
(gdb) p y_temp
$39 = (float *) 0x815ea20
(gdb) p foo
$40 = (FOO *) 0x81d4e90
之后:
(gdb) p y_temp
$41 = (float *) 0x343434
(gdb) p y
$42 = 0x343434
(gdb) p foo
$43 = (FOO *) 0x343434
以下是变量的定义:
FOO *foo;
float y[nsamples];
float size_y = nsamples*sizeof(y);
float* y_temp = (float*) malloc(size_y);
我知道,这不是memcpy / move的错误,所以我在寻找一个tipp,我身边的编程错误可能导致它。
谢谢
没有找到相关结果
已邀请:
2 个回复
郸身
已经给出了整个数组的大小,类型应该是
。 如果你这样做,
和内存
指向相同的大小。你还应该确保你朝着正确的方向前进。现在,y是目的地。此外,如果源和目标不重叠(它们不在此处),请使用
。
茶鬼失形
然后你做
但是
没有足够的空间用于所有
字节!