32 lines
No EOL
840 B
C
32 lines
No EOL
840 B
C
#include <stdio.h>
|
|
#include <unistd.h>
|
|
|
|
int main() {
|
|
printf("Konec originalne kopice programa: %p\n", sbrk(0));
|
|
|
|
//dodelimo nekaj spomina, sbkr vrne začetek nove kopice
|
|
void *p = sbrk(4096);
|
|
//preverimo za neuspeh
|
|
if(p == (void*)-1) {
|
|
printf("sbkr failed\n");
|
|
return 1;
|
|
}
|
|
|
|
//razlika v koncih je vrjetno zaradi klica printf, ki morda klice malloc
|
|
printf("Konec kopice pred klicem sbkr: %p\n", p);
|
|
printf("Konec kopice po klicu sbkr: %p\n", sbrk(0));
|
|
|
|
//shranimo nekaj na spomin
|
|
int *x = (int*)p;
|
|
x[0] = 42;
|
|
printf("Na mestu %p je shranjeno stevilo %d\n", &x[0], x[0]);
|
|
|
|
//odstranimo spomin
|
|
if(brk(p) != 0) {
|
|
printf("Odstranjevanje je neuspesno!\n");
|
|
return 1;
|
|
}
|
|
|
|
printf("Po odstranjevanju je konec kopice na %p\n", sbrk(0));
|
|
return 0;
|
|
} |