小编Dav*_* Xu的帖子

怎么解释这个?一个"新"-ed数组没有初始化......?

我遇到了一些奇怪的事情:一个数组"new"-ed in heap with random values ...

我用以下代码进行了测试:

class Solution_046 {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        vector<vector<int>> rst;
        int sz = nums.size();
        if(sz)
        {
            vector<int> group;
            int* inuse = new int[sz];
            cout<<"--------- inuse ------------"<<endl;
            for(int ii=0; ii<sz; ++ii)
                //inuse[ii]=0, cout<<inuse[ii]<<", ";
                cout<<inuse[ii]<<",, ";
            cout<<endl;

            //......
        }
        return rst;
    }
};


int main()
{
    Solution_046 s046;
    vector<int> vv;
    vv.push_back(1);
    vv.push_back(2);
    vv.push_back(3);
    vv.push_back(4);
    vv.push_back(5);
    vv.push_back(6);
    vv.push_back(7);
    vector< vector<int> > rst = s046.permute(vv);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我禁用那些"vv.push_back(...)"中的一行或两行,则打印的结果将包含一些随机值而不是全部为零:

$ ./nc (with all 7 lines) …
Run Code Online (Sandbox Code Playgroud)

c++ arrays memory-management

0
推荐指数
1
解决办法
89
查看次数

我的2D阵列太大了吗?

我在下面运行代码并得到一些奇怪的输出:

#include <iostream>

using namespace std;

int main()
{
    for(int ll=1444; ll<1450; ++ll)
    {
        cout<<ll<<endl;

        cout<<"###### 0 #######"<<endl;
        int mtx[ll][ll];
        cout<<"###### 1 #######"<<endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

1444
###### 0 #######
###### 1 #######
1445
###### 0 #######
###### 1 #######
1446
###### 0 #######
###### 1 #######
1447
###### 0 #######
###### 1 #######
1448
###### 0 #######
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

我尝试用ll的值逐个检查,当ll达到1448时,确实发生了分段错误.

然后我将数组从int更改为bool,问题消失了.

基于ll值的计算:

ll=1447, total space of array is 1447*1447*4 = 8375236 bytes = 8178.95 Kbytes
ll=1448, total …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

0
推荐指数
1
解决办法
256
查看次数

标签 统计

arrays ×2

c++ ×2

memory-management ×1