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