记录 | C & C++ realloc重新申请内存块

#include 
#include 

int main(){
    size_t nv = 2;
    int *v = (int *)malloc(nv * sizeof(int));

    v[0] = 4;
    v[1] = 3;

    nv = 4;
    v = (int *)realloc(v, nv * sizeof(int));       // realloc重新分配内存

    v[2] = 2;
    v[3] = 1;

    int sum = 0;
    for(size_t i = 0; i < nv; i++){
        sum += v[i];
    }

    printf("%d\n", sum);

    free(v);
    return 0;
}

拓展一下,如果是在 C++ 里面呢,来看:

#include 
#include 

int main(){
    std::vector v(2);

    v[0] = 4;
    v[1] = 3;

    v.resize(4);          // 对比C语言的,具有对象封装的思想

    v[2] = 2;
    v[3] = 1;

    int sum = 0;
    for(size_t i = 0; i < v.size(); i++){
        sum += v[i];
    }

    std::cout << sum << std::endl;
    return 0;
}

你可能感兴趣的:(踩坑记录,c++,c语言,内存申请,malloc,realloc,resize)