Am scris un mic program si nu prea inteleg de ce functioneaza in anumite situatii. Spre exemplu am pornit de la
#include <iostream>
#include <malloc.h>
#define SIZE 1000000000
using namespace std;
int main() {
char *a;int i;
a = (char *) malloc (SIZE * sizeof(char));
for (i=0; i<SIZE ; ++i) *(a+i)='a'+i;
//for (int i=0; i<100000 ; ++i) {cout<<a[i]<<" ";}
cout<<"Query succesfully completed "<<i<<" times :)\xA";
return 0;}
care merge OK!. Daca in for-u
for (i=0; i<SIZE ; ++i) *(a+i)='a'+i; modific
SIZE cu
SIZE +1 inca mai ruleaza programul. La
SIZE + 200 inca mai merge. La 2 * SIZE da
Segmentation fault (core dumped).
Nu trebuia sa primesc
Segmentation fault (core dumped) de la
SIZE+1 ?
Mersi inca o data.