⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boundtest.c

📁 Tiny C&C++,看看吧,也许用的着
💻 C
字号:
#include <stdlib.h>#include <stdio.h>#define NB_ITS 1000000//#define NB_ITS 1#define TAB_SIZE 100int tab[TAB_SIZE];int ret_sum;char tab3[256];int test1(void){    int i, sum = 0;    for(i=0;i<TAB_SIZE;i++) {        sum += tab[i];    }    return sum;}/* error */int test2(void){    int i, sum = 0;    for(i=0;i<TAB_SIZE + 1;i++) {        sum += tab[i];    }    return sum;}/* actually, profiling test */int test3(void){    int sum;    int i, it;    sum = 0;    for(it=0;it<NB_ITS;it++) {        for(i=0;i<TAB_SIZE;i++) {            sum += tab[i];        }    }    return sum;}/* ok */int test4(void){    int i, sum = 0;    int *tab4;    tab4 = malloc(20 * sizeof(int));    for(i=0;i<20;i++) {        sum += tab4[i];    }    free(tab4);    return sum;}/* error */int test5(void){    int i, sum = 0;    int *tab4;    tab4 = malloc(20 * sizeof(int));    for(i=0;i<21;i++) {        sum += tab4[i];    }    free(tab4);    return sum;}/* error *//* XXX: currently: bug */int test6(void){    int i, sum = 0;    int *tab4;        tab4 = malloc(20 * sizeof(int));    free(tab4);    for(i=0;i<21;i++) {        sum += tab4[i];    }    return sum;}/* error */int test7(void){    int i, sum = 0;    int *p;    for(i=0;i<TAB_SIZE + 1;i++) {        p = &tab[i];        if (i == TAB_SIZE)            printf("i=%d %x\n", i, p);        sum += *p;    }    return sum;}/* ok */int test8(void){    int i, sum = 0;    int tab[10];    for(i=0;i<10;i++) {        sum += tab[i];    }    return sum;}/* error */int test9(void){    int i, sum = 0;    char tab[10];    for(i=0;i<11;i++) {        sum += tab[i];    }    return sum;}/* ok */int test10(void){    char tab[10];    char tab1[10];    memset(tab, 0, 10);    memcpy(tab, tab1, 10);    memmove(tab, tab1, 10);    return 0;}/* error */int test11(void){    char tab[10];    memset(tab, 0, 11);    return 0;}/* error */int test12(void){    void *ptr;    ptr = malloc(10);    free(ptr);    free(ptr);    return 0;}/* error */int test13(void){    char pad1 = 0;    char tab[10];    char pad2 = 0;    memset(tab, 'a', sizeof(tab));    return strlen(tab);}int (*table_test[])(void) = {    test1,    test1,    test2,    test3,    test4,    test5,    test6,    test7,    test8,    test9,    test10,    test11,    test12,    test13,};int main(int argc, char **argv){    int index;    int (*ftest)(void);    if (argc < 2) {        printf("usage: boundtest n\n"               "test TCC bound checking system\n"               );        exit(1);    }    index = 0;    if (argc >= 2)        index = atoi(argv[1]);    /* well, we also use bounds on this ! */    ftest = table_test[index];    ftest();    return 0;}/* * without bound   0.77 s * with bounds    4.73 */  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -