Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的memset函数+;工作不正常_C++_Memset - Fatal编程技术网

C++ C+中的memset函数+;工作不正常

C++ C+中的memset函数+;工作不正常,c++,memset,C++,Memset,我尝试使用memset将动态分配的(2D?)数组初始化为allIs(I>0)。但是,当我打印出数组的值时,它正在打印一些垃圾。以下是我的代码片段: int main() { int T=1, R=3, C=3; int **grid = new int*[R], *temp = new int[R*C]; for (int i=0; i<R; i++) grid[i] = (temp+(C*i)); for (int t=1; t<=T

我尝试使用
memset
将动态分配的(2D?)数组初始化为all
I
s(
I>0
)。但是,当我打印出数组的值时,它正在打印一些垃圾。以下是我的代码片段:

int main() {
    int T=1, R=3, C=3;
    int **grid = new int*[R], *temp = new int[R*C];
    for (int i=0; i<R; i++)
        grid[i] = (temp+(C*i));
    for (int t=1; t<=T; t++){
        memset(temp,1,sizeof(int)*R*C);
        cout << t << ":\n";
        for (int i=0; i<R; i++){
            for (int j=0; j<C; j++)
                cout << grid[i][j] << " ";
            cout << endl;
        }
    }
    delete [] grid;
    delete [] temp;
    return 0;
}
但是,如果我尝试用0初始化它,它工作正常并显示:

我对学习C++比较有新意。代码出了什么问题




memset
写入数组中的每个字节,而不是每个int

十六进制中的值
16843009
0x01010101
一个整数,每个整数有4个字节设置为
1


memset
将对字节进行操作,无法使其对整数进行操作。

这可能会有帮助:谢谢!那么,有没有办法将数组初始化为所有1(除了使用memset或循环所有元素并将它们设置为1之外)?@Python\u user yes。
1:
16843009 16843009 16843009
16843009 16843009 16843009
16843009 16843009 16843009
1:
0 0 0
0 0 0
0 0 0