{"id":701,"date":"2015-10-27T11:21:12","date_gmt":"2015-10-27T11:21:12","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=701"},"modified":"2016-01-23T14:21:08","modified_gmt":"2016-01-23T14:21:08","slug":"dynamische-speicherzuweisung-c","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/dynamische-speicherzuweisung-c\/","title":{"rendered":"Dynamische Speicherzuweisung C: &#8222;Allocation&#8220;"},"content":{"rendered":"<p><strong>Nicht dynamisch<\/strong><br \/>\nDefiniert man eine Variable, Konstante oder ein<strong> Array mit fixer L\u00e4nge<\/strong> <span class=\"lang:sh decode:true crayon-inline \">char array[5]<\/span>\u00a0, so ist die L\u00e4nge des Speicherplatzes klar und die Speicherzuweisung ist nicht dynamisch.<br \/>\nNicht dynamische Speicherzuweisungen werden im <a href=\"http:\/\/coolt.ch\/notizen\/speicherorte-die-segmente-im-ram\/\">STACK<\/a> abgelegt.<\/p>\n<p><strong>Grund f\u00fcr dynamisch<\/strong><br \/>\nDie Gr\u00f6sse des Arrays \u00e4ndert sich w\u00e4hrend der Verarbeitung. Man kann das Array nicht auf eine fixe Gr\u00f6sse initialisieren.<br \/>\nEine <em>dynmische Speicherzuweisung nennt man Allozierung<\/em>. Die Daten werden im <a href=\"http:\/\/coolt.ch\/notizen\/speicherorte-die-segmente-im-ram\/\">HEAP<\/a> abgelegt.<\/p>\n<p><strong>Vorgehen<\/strong><br \/>\n<span style=\"text-decoration: underline;\">1. Speicherplatz reservieren<\/span><br \/>\nDies geschieht \u00fcber die Funktion malloc().\u00a0 Es ist zwingend, dass man die Anzahl Bytes nennt.\u00a0 <span class=\"lang:sh decode:true crayon-inline\">int *buffer1 = <strong>malloc(<\/strong>n * sizeof(data)<strong>)<\/strong>;<\/span>.\u00a0 N bezeichnet die Anzahl daten, data bezeichnet die Gr\u00f6sse eines Datenpackets.<br \/>\nDie Funktion <span class=\"lang:sh decode:true crayon-inline\">sizeof( ) <\/span>\u00a0gibt immer die <strong>Anzahl Bytes<\/strong> der Variable zur\u00fcck.<br \/>\n<span style=\"text-decoration: underline;\">2. Auf dynamische Daten zugreiffen<\/span><br \/>\nDie Funktion malloc() gibt als Returnwert die Adresse zur\u00fcck. Auf dynamische Daten kann<strong> nur \u00fcber den Pointer<\/strong> zugegriffen werden. Ein direkter Zugriff \u00fcber den Variablennamen auf die Daten ist nicht m\u00f6glich. <span class=\"lang:c decode:true crayon-inline\">data1 = buffer1[0];<\/span><br \/>\n<span style=\"text-decoration: underline;\">3. Speicherplatz freigebe<\/span><br \/>\n<span class=\"lang:sh decode:true crayon-inline\">free(buffer1);<\/span> Wird Speicherplatz nicht mehr freigegeben, so entsteht ein <em>Memory Leak<\/em>. Ohne free() verkleinert sich die Speicherkapazit\u00e4t des RAMs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nicht dynamisch Definiert man eine Variable, Konstante oder ein Array mit fixer L\u00e4nge char array[5]\u00a0, so ist die L\u00e4nge des Speicherplatzes klar und die Speicherzuweisung ist nicht dynamisch. Nicht dynamische Speicherzuweisungen werden im STACK abgelegt. Grund f\u00fcr dynamisch Die Gr\u00f6sse des Arrays \u00e4ndert sich w\u00e4hrend der Verarbeitung. Man kann das Array nicht auf eine fixe &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/dynamische-speicherzuweisung-c\/\" class=\"more-link\"><span class=\"screen-reader-text\">Dynamische Speicherzuweisung C: &#8222;Allocation&#8220;<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[29,65],"tags":[11,17,3],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/701"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=701"}],"version-history":[{"count":6,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/701\/revisions"}],"predecessor-version":[{"id":1144,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/701\/revisions\/1144"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}