C-矩阵乘法-使用最大可分配RAMsize
我试图解决以下问题: “编写一个C程序,将n x n矩阵乘以n元素向量。选择内存允许的最大n。” 矩阵乘法非常容易实现,你可以在互联网上找到足够的信息,但我不知道如何计算我的内存的最大可分配大小 我想到的第一件事是用malloc()和realloc()函数进行动态内存分配,看看这有多大可能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) {
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等。