在这个问题,有人建议意见,我应该不会投的结果malloc,即
int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
而不是:
int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
C++中的数组是否有最大长度?
它是C++限制还是取决于我的机器?它可以调整吗?它取决于数组的类型吗?
我可以以某种方式突破该限制,还是必须寻找更好的信息存储方式?什么应该是最简单的方法?
我要做的是在数组上存储long long int,我在Linux环境中工作.我的问题是:如果我需要存储N> 10位数的N长整数数组,我该怎么办?
我需要这个,因为我正在为学校编写一些加密算法(例如p-Pollard),然后点击这个整数墙和数组表示的长度.
以下代码在2Gb机器上运行时给出了分段错误,但在4GB机器上运行.
int main()
{
int c[1000000];
cout << "done\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
阵列的大小只有4Mb.可以在c ++中使用的数组大小是否有限制?
如何发生堆栈溢出以及确保它不会发生的最佳方法是什么,或者是哪种方法可以防止,特别是在Web服务器上,但其他示例也会很有趣?
在我的C程序中,当我尝试分配此数组值时:
double sample[200000][2];
Run Code Online (Sandbox Code Playgroud)
我收到了分段错误错误.但是当我使用时:
double sample[20000][2]
Run Code Online (Sandbox Code Playgroud)
有用!!这些指数值是否有限制?
在我看来,这就是内存在C ++中的工作方式:
如果使用,new则要求编译器的实现从堆中提供一些内存(任何内存)。
如果您使用placement new语法,则您将要求重新分配一个特定的内存位置,该地址您已经知道该地址(假设它也是来自堆),该地址最初也是new在某个时候从操作员分配的。
我的问题是这样的:
无论如何,是否有先验知道程序可以使用哪些内存的位置(即,无需从new操作员已经分配给您的堆中重新分配内存)?
堆中的内存是否连续?如果是这样,您能找出它的起点和终点吗?
ps只是试图尽可能快地接近金属...
我很久没有使用过C了,而且我在用CSV填充2D数组时遇到了问题.文件格式如下:
节点,输入,输出
1,200,10393
...
这实际上是链表的数组表示.有150000个元素,每当我尝试填充数组时,我得到一个错误,说"在main.exe中0x000000013facb957处未处理的异常:0xC00000FD:堆栈溢出." 我在64位机器上使用16GB RAM,而我正在使用带有x64构建配置的VS C++ 2010 Express.
int main(int argc, char *argv[])
{
int counter = 0;
char line [ 1024 ];
int map[150000][2] = {0};
char *comma = ",";
char *token;
int index;
int in, out;
char* end;
int nodeID;
FILE *fp;
fp = fopen("mapsorted.txt","r"); // read mode
if( fp == NULL )
{
perror("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
//Skip header line
fgets ( line, sizeof line, fp );
while ( fgets ( line, …Run Code Online (Sandbox Code Playgroud) 嗨,我从这段代码得到一个奇怪的分段错误:
int main(void){
int array1[10000000];
int n = sizeof(array1);
printf("%d \n", n );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我改变
int array1[10000000];
Run Code Online (Sandbox Code Playgroud)
至
int array1[1000000]; ( one less zero)
Run Code Online (Sandbox Code Playgroud)
该程序工作和打印4000000
我在Fedora 21(64位)上运行它
这是因为C中的数组有最大大小吗?先感谢您
我在C中编写了一些代码,将char数组的最大大小设为100.它运行良好.但是当我将char数组的最大大小增加到10000时,它会给我分段错误(因为它超出了它的限制).有人能告诉我如何增加最大大小并存储长度为10000的字符串.
即如何将"char a [100]"作为"char a [10000]"并执行相同的代码????