unsigned char* a = new unsigned char[100]; ... memcpy(a,a+1,99);//原来的,嫌效率低,就给改成下面的。。
a+=1;//用这句替换上面 memcpy,结果再操作 a 的时候,写入 100 个字节,就越界了。。。
真是太丢人了。对不起程序员这个职业,全靠脸皮厚。。。
什么时候才能不这么菜!
1
ysc3839 2018-01-17 18:54:51 +08:00
unsigned char* b = a + 1;
然后用 b 不就好了? |
2
am241 2018-01-17 18:56:59 +08:00 via Android
不该用 memmove 么?
|
3
kingwl 2018-01-17 19:00:18 +08:00 via Android
贵司性能瓶颈已经在 int+上了吗。。。
|
6
h4lbhg1G 2018-01-17 19:46:02 +08:00
这种玩意不应该是循环数组么 a[(idx+offset)%100]; 不过这里的求余代价也是比较大,而且是每次操作都会倍加,相当于一次乘法指令,总的来说相当于四五倍原来的指令。
|
7
xieyudi1990 2018-01-18 07:34:01 +08:00 via Android
@h4lbhg1G 如果是模 2^n 对齐的数,倒是可以用位操作解决。
|