/*
learning
from all the post - please correct me if i am
wrong..
now it makes sense- if i remember it
right, the stack is a fixed memory segment- allocated on program start up... while the
virtual memory can be sized/resized programmatically using malloc, realloc, free...
the struct pointer array -
long size = 10000000;
struct foo
*bar[size];
should have been allocated from heap
- using malloc()... instead of just a fixed size stack (program text)
*/
This
one SIGSEV's:
#include
#include
int main(void)
{
struct foo {
int x;
char s[5];
};
long size = 10000000;
struct foo
*bar[size];
long i = 0;
while (i < size)
{
printf("%ld \n", i);
i++;
}
}
This
one works - commenting out the struct foo
pointer
array:
#include
#include
int main(void)
{
struct foo {
int x;
char
s[5];
};
long size = 10000000;
//struct foo
*bar[size];
long i = 0;
while (i < size)
{
printf("%ld \n", i);
i++;
}
}
This one
works - commenting our the while
loop:
#include
#include
int
main(void) {
struct foo {
int x;
char
s[5];
};
long size = 10000000;
struct foo
*bar[size];
long i = 0;
while (i
< size) {
//printf("%ld \n", i);
i++;
}
}
/*
what i really am trying to achieve is this... which SIGSEVS -
ok thanks for
all your replies i really appreciate it...
- will look int and use explore
using heap memory-- thanks guys
*/
int
main(void) {
struct foo
{
int x;
char
s[5];
};
long size =
10000000;
struct foo *bar[size];
long i =
0;
while (i < size) {
bar[i] = (struct foo *)
malloc(sizeof(struct foo));
free(bar[i]);
i++;
}
return
EXIT_SUCCESS;
}
No comments:
Post a Comment