{"id":30003,"date":"2023-01-12T17:26:38","date_gmt":"2023-01-12T11:56:38","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/"},"modified":"2023-01-12T17:26:38","modified_gmt":"2023-01-12T11:56:38","slug":"solved-dynamic-char-allocation-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/","title":{"rendered":"[Solved] Dynamic Char Allocation [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-44146717\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"44146717\" data-parentid=\"44146363\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You are not managing your buffers correctly, not even close.  In fact, there are a LOT of mistakes in your code. Every one of your <code>sizeof()<\/code> calls is wrong. You are leaking <code>buffer<\/code>, <code>tmp<\/code>, and <code>data<\/code> on every loop iteration. You are using <code>strcat()<\/code> incorrectly. And worse, you are processing <em>binary audio data<\/em> using <em>string functions<\/em>?  No wonder why your code is failing.<\/p>\n<p>Try something more like this instead:<\/p>\n<pre><code>char* getBuffer(int *bufsize)\n{\n    ...\n    *bufsize = ...; \/\/ &lt;-- number of bytes being returned\n    return ... ; \/\/ &lt;-- malloc()'ed pointer to actual bytes\n}\n\n...\n\nchar *data = NULL;\nint datasize = 0;\nint allocsize = 0;\n\nchar *buffer;\nint bufsize;\n\nfor (loops = 100; loops &gt; 0; loops--) {\n    buffer = getBuffer(&amp;bufsize);\n\n    if ((datasize + bufsize) &gt; allocsize)\n    {\n        \/\/ round new size up to next 1K boundary\n        int tmpsize = (datasize + bufsize + 1023) &amp; ~1023;\n\n        char *tmp = (char*) realloc(data, tmpsize);\n        if (!tmp) {\n            free(buffer);\n            break;\n        }\n\n        data = tmp;\n        allocsize = tmpsize;\n    }\n\n    memcpy(data + datasize, buffer, bufsize);\n    datasize += bufsize;\n\n    free(buffer);\n}\n\nFILE *f = fopen(..., \"wb\");\nfwrite(data, datasize, 1, f);\nfclose(f);\n\nfree(data);\n<\/code><\/pre>\n<p>Or simpler:<\/p>\n<pre><code>char *buffer;\nint bufsize;\n\nFILE *f = fopen(..., \"wb\");\n\nfor (loops = 100; loops &gt; 0; loops--) {\n    buffer = getBuffer(&amp;bufsize);\n    if (fwrite(buffer, bufsize, 1, f) != 1) {\n        free(buffer);\n        break;\n    }\n    free(buffer);\n}\n\nfclose(f);\n<\/code><\/pre>\n<p>However, you tagged your question as <code>C++<\/code>, even though you are not actually using C++ code.  The C++ way to handle this would look more like this instead:<\/p>\n<pre><code>#include &lt;vector&gt;\n#include &lt;string&gt;\n#include &lt;fstream&gt;\n\nvoid getBuffer(std::vector&lt;char&gt; &amp;buffer)\n{\n    ...\n    buffer.resize(...); \/\/ &lt;-- number of bytes\n    \/\/ fill buffer with bytes as needed...\n}\n\n...\n\nstd::string data;\n\nfor (loops = 100; loops &gt; 0; loops--) {\n    std::vector&lt;char&gt; buffer;\n    getBuffer(buffer);\n    data.append(buffer.data(), buffer.size());\n}\n\nstd::ofstream f(..., std::ios_base::binary);\nf.write(data.c_str(), data.size());\nf.close();\n<\/code><\/pre>\n<p>Or simpler:<\/p>\n<pre><code>#include &lt;string&gt;\n#include &lt;fstream&gt;\n\nvoid appendBuffer(std::string &amp;buffer)\n{\n    ...\n    buffer.append(...); \/\/ &lt;-- append bytes\n}\n\n...\n\nstd::string data;\n\nfor (loops = 100; loops &gt; 0; loops--) {\n    appendBuffer(data);\n}\n\nstd::ofstream f(..., std::ios_base::binary);\nf.write(data.c_str(), data.size());\nf.close();\n<\/code><\/pre>\n<p>Or simpler:<\/p>\n<pre><code>#include &lt;fstream&gt;\n\nbool outputBuffer(std::ostream &amp;out)\n{\n    ...\n    return out.write(...); \/\/ &lt;-- write bytes\n}\n\n...\n\nstd::ofstream f(..., std::ios_base::binary);\n\nfor (loops = 100; loops &gt; 0; loops--) {\n    if (!outputBuffer(f)) break;\n}\n\nf.close();\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Dynamic Char Allocation [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You are not managing your buffers correctly, not even close. In fact, there are a LOT of mistakes in your code. Every one of your sizeof() calls is wrong. You are leaking buffer, tmp, and data on every loop iteration. You are using strcat() incorrectly. And worse, you are processing binary audio data using &#8230; <a title=\"[Solved] Dynamic Char Allocation [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/\" aria-label=\"More on [Solved] Dynamic Char Allocation [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,472],"class_list":["post-30003","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-char"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] Dynamic Char Allocation [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Dynamic Char Allocation [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You are not managing your buffers correctly, not even close. In fact, there are a LOT of mistakes in your code. Every one of your sizeof() calls is wrong. You are leaking buffer, tmp, and data on every loop iteration. You are using strcat() incorrectly. And worse, you are processing binary audio data using ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-12T11:56:38+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Dynamic Char Allocation [closed]\",\"datePublished\":\"2023-01-12T11:56:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/\"},\"wordCount\":109,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\",\"char\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/\",\"name\":\"[Solved] Dynamic Char Allocation [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2023-01-12T11:56:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-dynamic-char-allocation-closed\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Dynamic Char Allocation [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Dynamic Char Allocation [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Dynamic Char Allocation [closed] - JassWeb","og_description":"[ad_1] You are not managing your buffers correctly, not even close. In fact, there are a LOT of mistakes in your code. Every one of your sizeof() calls is wrong. You are leaking buffer, tmp, and data on every loop iteration. You are using strcat() incorrectly. And worse, you are processing binary audio data using ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/","og_site_name":"JassWeb","article_published_time":"2023-01-12T11:56:38+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Dynamic Char Allocation [closed]","datePublished":"2023-01-12T11:56:38+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/"},"wordCount":109,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","char"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/","name":"[Solved] Dynamic Char Allocation [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-01-12T11:56:38+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-dynamic-char-allocation-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Dynamic Char Allocation [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/30003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=30003"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/30003\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=30003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=30003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=30003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}