使用clang++ 运行时检查数组越界

@vrqq  June 25, 2017
https://www.zhihu.com/question/24089249

来实践一下,以AddressSanitizer为例
编译运行:

clang++ -g -fsanitize=address -fno-omit-frame-pointer poj1226.cpp -o 1226
./1226

测试,得到以下结果:
1226.png

最后送上此题测试数据

pku1226 Substrings
题目来源 ACM-ICPC 2002 Tehran
http://icpc.sharif.edu/acmicpc02/problems.html
数据:A.in A.cor

续集

树状数组要注意跑初始rank时候有时会这样写

for (int i=0;i<n;i++)
    cnt[ str[i] ]++;
for (int i=0;i<128;i++)
    cnt[i+1] += cnt[i];

记录cnt时候遍历的是原字符串,所以cnt的有效下标应该是0~128,要把char的范围覆盖住。


添加新评论