我正在unix服务器中执行Proc代码,proc将从文件读取记录并将数据存储在结构数组中,经过一些处理后它将产生输出。当我从文件中读取368700条记录并且代码中的进程意味着它的执行正常。但是当我尝试从文件和处理方法中读取370000条记录时,我收到错误ORA-12533: TNS:illegal ADDRESS parameters and illegal address
。这个错误可能是什么原因和可能的解决方案?
我已完成内存分配,如下所示:
int unsigned long size=(atoi(argv[2]))+1;
printf("\nthe size is %lu",size);
printf("\n am here 1");
what_if_var =(what_if*)malloc((size)*sizeof(what_if));
temp_var =(what_if*)malloc((size)*sizeof(what_if));
答案 0 :(得分:1)
malloc()
in C。sizeof *what_if_var
的类型不是malloc()
,最好在what_if_var
的调用中写what_if
。NULL
指针。size_t
来保存大小,这是malloc()
的参数类型,所以它有意义。答案 1 :(得分:0)
你应该检查malloc是否返回NULL,这意味着没有可用的内存分配。您应该使用free()函数再次使用不会再使用的数据释放内存。
内存限制取决于操作系统及其配置。 32位进程的内存限制可能是2 GB或4 GB。