Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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-矩阵乘法-使用最大可分配RAMsize_C_Matrix_Dynamic Memory Allocation_Ram - Fatal编程技术网

C-矩阵乘法-使用最大可分配RAMsize

C-矩阵乘法-使用最大可分配RAMsize,c,matrix,dynamic-memory-allocation,ram,C,Matrix,Dynamic Memory Allocation,Ram,我试图解决以下问题: “编写一个C程序,将n x n矩阵乘以n元素向量。选择内存允许的最大n。” 矩阵乘法非常容易实现,你可以在互联网上找到足够的信息,但我不知道如何计算我的内存的最大可分配大小 我想到的第一件事是用malloc()和realloc()函数进行动态内存分配,看看这有多大可能 int main() { int n = 0; float** first = (float**) malloc(sizeof(float*)); while(1) {

我试图解决以下问题:

“编写一个C程序,将n x n矩阵乘以n元素向量。选择内存允许的最大n。”

矩阵乘法非常容易实现,你可以在互联网上找到足够的信息,但我不知道如何计算我的内存的最大可分配大小

我想到的第一件事是用malloc()和realloc()函数进行动态内存分配,看看这有多大可能

int main() {  
    int n = 0;
    float** first = (float**) malloc(sizeof(float*));

    while(1) {
        next** = (float**) realloc(first, n * sizeof(float*));
        n++;

        if (next == NULL) {
            break;
        }
    }   
}
问题是,Windows 10使用的是虚拟RAM和其他东西,因此这种方法会导致无休止的循环


有什么想法吗?

把你的代码编译成32位程序,然后你的内存就会很快用完。32位程序不能寻址超过4Gb的内存或虚拟内存。。。或者人为地将程序分配的最大内存大小限制为RAM的大小(比如8GB或其他大小)。选择内存允许的大小的n,这是一种可怕的、考虑不周的情况。在默认的Linux安装上尝试这一点,您的
malloc()
/
realloc()
将成功,但当您尝试实际使用内存时,OOM杀手将开始终止系统上的进程。相关问题@Jabberwocky 32位代码可以分配超过4Gb和8、16、Gb等。