Advertisement
Guest User

Untitled

a guest
Oct 10th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int *p;
  5.  
  6. void *memory_alloc(unsigned int size)
  7. {
  8. int x=1, zvysok;
  9.  
  10. for(;;){
  11. if (p[0] >= size + 4){
  12. if(size % 4 != 0) {
  13. if (p[x] >= 0) {
  14. if (p[x]> size){
  15. p[x] = p[x] * (-1);
  16. p[0] = p[0] - ((p[x]*(-1)) + 4);
  17. return &p[x+1];
  18. }
  19. else if ((size > p[x]) && (p[x] != 0))
  20. return NULL;
  21. else {
  22. zvysok = size % 4;
  23. p[x] = ((size + (4-zvysok)) * (-1));
  24. p[0] = p[0] - (size + (4-zvysok) + 4);
  25. return &p[x+1];
  26. }
  27. }
  28. else {
  29. if (p[x] < 0){
  30. x = x +1+ ((p[x]*(-1))/4);
  31. }
  32. else if (p[x] >= 0){
  33. x = x +1+ ((p[x])/4);
  34. }
  35. }
  36. }
  37. else{
  38. if (p[x] >= 0){
  39. if (p[x]> size) {
  40. p[x] = p[x] * (-1);
  41. p[0] = p[0] - ((p[x]*(-1)) + 4);
  42. return &p[x+1];
  43. }
  44. else if ((size > p[x]) && (p[x] != 0))
  45. return NULL;
  46. else {
  47. p[x] = ( size ) * (-1);
  48. p[0] -= (size + 4);
  49. return &p[x+1];
  50. }
  51. }
  52. else {
  53. if (p[x] < 0){
  54. x = x +1+ ((p[x]*(-1))/4);
  55. }
  56. else if (p[x] >= 0){
  57. x = x +1+ ((p[x])/4);
  58. }
  59. }
  60. }
  61. }
  62. else
  63. return NULL;
  64. }
  65. }
  66.  
  67. int memory_free(void *valid_ptr)
  68. {
  69. int x=2;
  70. int pom = 0;
  71.  
  72. for(;;){
  73. if (&p[x] == valid_ptr){
  74. if(p[x-1] < 0) {
  75. p[x-1] = p[x-1] *(-1);
  76. p[0] = p[0] + p[x-1] +4;
  77. pom = 0;
  78. return 0;
  79. }
  80. }
  81. else {
  82. if (p[x-1] < 0) {
  83. x = x + 1 + ((p[x-1]*(-1))/4);
  84.  
  85. pom = 0;
  86. }
  87. else {
  88. if (p[x-1] > 0) {
  89. x = x + 1 + ((p[x-1])/4);
  90. pom=0;
  91. }
  92. }
  93. }
  94. if (pom == 1){
  95. return 1;
  96. }
  97. pom = 1;
  98. }
  99. }
  100.  
  101. int memory_check(void *ptr)
  102. {
  103.  
  104.  
  105. return 0;
  106. }
  107.  
  108. void memory_init(void *ptr, unsigned int size)
  109. {
  110. p = ptr;
  111. p[0] = (size -4);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement