{"id":3319,"date":"2017-06-02T22:10:26","date_gmt":"2017-06-02T14:10:26","guid":{"rendered":"https:\/\/ixyzero.com\/blog\/?p=3319"},"modified":"2017-06-02T22:10:26","modified_gmt":"2017-06-02T14:10:26","slug":"c%e8%af%ad%e8%a8%80%e4%b8%ad%e7%9a%84sizeof%e5%92%8cmalloc","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/3319.html","title":{"rendered":"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc"},"content":{"rendered":"<p>=Start=<\/p>\n<h4 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u7f18\u7531\uff1a\">\u7f18\u7531\uff1a<\/h4>\n<p>\u6700\u8fd1\u5728\u7528C\u8bed\u8a00\u5199\u7a0b\u5e8f\uff0c\u7531\u4e8eC\u8bed\u8a00\u7684\u57fa\u7840\u5df2\u7ecf\u5fd8\u5f97\u5dee\u4e0d\u591a\u4e86\uff08\u4e5f\u53ef\u80fd\u662f\u4e4b\u524d\u5c31\u6ca1\u5b66\u597d\u2026\u2026\uff09\uff0c\u5728\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u529f\u80fd\u65f6\u5c31\u78b0\u5230\u4e86\u597d\u591a\u95ee\u9898\uff0c\u5728\u8fd9\u91cc\u5c31\u8bb0\u5f55\u4e00\u4e0b\u5176\u4e2d\u6bd4\u8f83\u5178\u578b\u7684\u548csizeof\u548cmalloc\u76f8\u5173\u7684\u95ee\u9898\uff08\u611f\u89c9\u7528\u8fd9\u79cd\u63a5\u8fd1\u4e8e\u5b9e\u6218\u7684\u7f16\u7a0b\u9898\u53bb\u9762\u8bd5\u5019\u9009\u8005\uff0c\u6548\u679c\u4f1a\u5f88\u597d\uff0c^_^\uff09<\/p>\n<h4 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u6b63\u6587\uff1a\">\u6b63\u6587\uff1a<\/h4>\n<h5 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u53c2\u8003\u89e3\u7b54\uff1a\">\u53c2\u8003\u89e3\u7b54\uff1a<\/h5>\n<blockquote><p><span style=\"color: #ff0000;\"><strong>sizeof\u662fC\u8bed\u8a00\u7684\u4e00\u79cd\u5355\u76ee\u64cd\u4f5c\u7b26<\/strong><\/span>\uff0c\u5982C\u8bed\u8a00\u7684\u5176\u4ed6\u64cd\u4f5c\u7b26++\u3001\u2013\u7b49\u3002\u5b83\u5e76\u4e0d\u662f\u51fd\u6570\u3002sizeof\u64cd\u4f5c\u7b26\u4ee5\u5b57\u8282\u5f62\u5f0f\u7ed9\u51fa\u4e86\u5176\u64cd\u4f5c\u6570\u7684\u5b58\u50a8\u5927\u5c0f\u3002\u64cd\u4f5c\u6570\u53ef\u4ee5\u662f\u4e00\u4e2a\u8868\u8fbe\u5f0f\u6216\u62ec\u5728\u62ec\u53f7\u5185\u7684\u7c7b\u578b\u540d\u3002\u64cd\u4f5c\u6570\u7684\u5b58\u50a8\u5927\u5c0f\u7531\u64cd\u4f5c\u6570\u7684\u7c7b\u578b\u51b3\u5b9a\u3002<\/p>\n<hr \/>\n<\/blockquote>\n<blockquote><p>void *malloc(size_t size);<br \/>\nvoid free(void *ptr);<\/p>\n<p>The malloc() function allocates size bytes and returns a pointer to the allocated memory. <span style=\"color: #ff0000;\"><strong>The memory is not initialized.<\/strong><\/span> If size is 0, then malloc() returns either NULL, or a unique pointer value that can later be successfully passed to free().<\/p>\n<p>The free() function frees the memory space pointed to by ptr, <span style=\"color: #ff0000;\">which must have been returned by a previous call to <strong>malloc<\/strong>(), <strong>calloc<\/strong>() or <strong>realloc<\/strong>().<\/span> Otherwise, or if free(ptr) has already been called before, undefined behavior occurs. <span style=\"color: #ff0000;\"><strong>If ptr is NULL, no operation is performed.<\/strong><\/span><\/p><\/blockquote>\n<p>\u5728\u4e0b\u9762\u7684\u4e00\u6bb5\u4ee3\u7801\u4e2d\u5b58\u5728\u51e0\u4e2a\u9519\u8bef\u548c\u51e0\u4e2a\u4e0d\u592a\u5408\u7406\u7684\u5730\u65b9\uff0c\u8bf7\u627e\u51fa\u6765\u5e76\u8bf4\u660e\u539f\u56e0\uff1a<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_914089\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">#include &lt;stdio.h&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">#include &lt;stdlib.h&gt;<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java plain\">#include &lt;time.h&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*get_current_time(<\/code><code class=\"java keyword\">const<\/code> <code class=\"java keyword\">char<\/code><code class=\"java plain\">* format) {<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_t t;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">struct tm *tmp;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">t = time(NULL);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">tmp = localtime(&amp;t);<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(tmp == NULL) {<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">perror(<\/code><code class=\"java string\">\"localtime\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*outstr = (<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*) malloc(sizeof(<\/code><code class=\"java keyword\">char<\/code><code class=\"java plain\">) * <\/code><code class=\"java value\">128<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(outstr == NULL) {<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">perror(<\/code><code class=\"java string\">\"malloc\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(strftime(outstr, sizeof(outstr), format, tmp) == <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">) {<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">fprintf(stderr, <\/code><code class=\"java string\">\"strftime returned 0\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">printf(<\/code><code class=\"java string\">\"Result string is \\\"%s\\\"\\n\"<\/code><code class=\"java plain\">, outstr);<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">outstr;<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"java keyword\">int<\/code> <code class=\"java plain\">main(<\/code><code class=\"java keyword\">int<\/code> <code class=\"java plain\">argc, <\/code><code class=\"java keyword\">char<\/code> <code class=\"java keyword\">const<\/code> <code class=\"java plain\">*argv[]) {<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*time_str;<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(argc == <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">) {<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_str = get_current_time(argv[<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">]);<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">} <\/code><code class=\"java keyword\">else<\/code> <code class=\"java plain\">{<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_str = get_current_time(<\/code><code class=\"java string\">\"%F %T\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">printf(<\/code><code class=\"java string\">\"%s\\n\"<\/code><code class=\"java plain\">, time_str);<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java value\">0<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"java plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h6 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u9519\u8bef1\u3001\u5728get_current_time\u51fd\u6570\u91cc\uff1a\">\u9519\u8bef1\u3001\u5728get_current_time\u51fd\u6570\u91cc\uff1a<\/h6>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_243711\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*get_current_time(<\/code><code class=\"java keyword\">const<\/code> <code class=\"java keyword\">char<\/code><code class=\"java plain\">* format) {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_t t;<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">struct tm *tmp;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">t = time(NULL);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">tmp = localtime(&amp;t);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(tmp == NULL) {<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">perror(<\/code><code class=\"java string\">\"localtime\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*outstr = (<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*) malloc(sizeof(<\/code><code class=\"java keyword\">char<\/code><code class=\"java plain\">) * <\/code><code class=\"java value\">128<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(outstr == NULL) {<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">perror(<\/code><code class=\"java string\">\"malloc\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ if (strftime(outstr, sizeof(outstr), format, tmp) == 0) {<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/*<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">strftime returned 0<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">Segmentation fault (core dumped)<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\u95ee\u9898\u51fa\u5728sizeof\u7684\u4f7f\u7528\u4e0a\uff0c\u56e0\u4e3aoutstr\u53ea\u662f\u4e00\u4e2a(char *)\u7c7b\u578b\u7684\u6307\u9488\uff0c\u6240\u4ee5sizeof(outstr)==4<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\u800c\u6211\u4eec\u7684\u9700\u6c42\u5b9e\u9645\u4e0a\u662f\u83b7\u53d6outstr\u6307\u5411\u5185\u5bb9\u88ab\u5206\u914d\u5230\u7684\u957f\u5ea6\u5927\u5c0f\uff0c\u6ca1\u529e\u6cd5\u901a\u8fc7sizeof\u6765\u83b7\u53d6\uff0c\u6700\u597d\u662f\u81ea\u5df1\u5728malloc\u65f6\u8bb0\u5f55\u4e00\u4e0b<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">*\/<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(strftime(outstr, <\/code><code class=\"java value\">128<\/code><code class=\"java plain\">, format, tmp) == <\/code><code class=\"java value\">0<\/code><code class=\"java plain\">) {<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">fprintf(stderr, <\/code><code class=\"java string\">\"strftime returned 0\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">NULL;<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">printf(<\/code><code class=\"java string\">\"Result string is \\\"%s\\\"\\n\"<\/code><code class=\"java plain\">, outstr);<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">outstr;<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"java plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h6 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u9519\u8bef2\u3001\u5728main\u51fd\u6570\u91cc\uff1a\">\u9519\u8bef2\u3001\u5728main\u51fd\u6570\u91cc\uff1a<\/h6>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_225887\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">int<\/code> <code class=\"java plain\">main(<\/code><code class=\"java keyword\">int<\/code> <code class=\"java plain\">argc, <\/code><code class=\"java keyword\">char<\/code> <code class=\"java keyword\">const<\/code> <code class=\"java plain\">*argv[]) {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">char<\/code> <code class=\"java plain\">*time_str;<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">if<\/code> <code class=\"java plain\">(argc == <\/code><code class=\"java value\">2<\/code><code class=\"java plain\">) {<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_str = get_current_time(argv[<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">]);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">} <\/code><code class=\"java keyword\">else<\/code> <code class=\"java plain\">{<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">time_str = get_current_time(<\/code><code class=\"java string\">\"%F %T\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">printf(<\/code><code class=\"java string\">\"%s\\n\"<\/code><code class=\"java plain\">, time_str);<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/*<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\u56e0\u4e3a get_current_time \u8fd4\u56de\u7684\u662f\u6307\u5411 malloc \u5206\u914d\u7a7a\u95f4\u7684\u6307\u9488\uff0c<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\u6240\u4ee5\u5728\u4f7f\u7528\u5b8c\u4e86\u4e4b\u540e\u9700\u8981\u624b\u52a8\u663e\u793a free \uff0c\u907f\u514d\u5185\u5b58\u6cc4\u9732\u7684\u95ee\u9898\u3002<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">*\/<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">free(time_str);<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java value\">0<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h5 id=\"C\u8bed\u8a00\u4e2d\u7684sizeof\u548cmalloc-\u53c2\u8003\u94fe\u63a5\uff1a\">\u53c2\u8003\u94fe\u63a5\uff1a<\/h5>\n<ul>\n<li>sizeof\u8fd0\u7b97\u7b26<br \/>\n<a class=\"external-link\" href=\"http:\/\/zh.cppreference.com\/w\/c\/language\/sizeof\" rel=\"nofollow\">http:\/\/zh.cppreference.com\/w\/c\/language\/sizeof<\/a><br \/>\n<a class=\"external-link\" href=\"https:\/\/superuser.com\/questions\/753163\/wheres-the-man-page-for-the-sizeof-c-function\" rel=\"nofollow\">https:\/\/superuser.com\/questions\/753163\/wheres-the-man-page-for-the-sizeof-c-function<\/a><\/li>\n<li>\u89e3\u6790C\u8bed\u8a00\u4e2d\u7684sizeof<br \/>\n<a class=\"external-link\" href=\"http:\/\/linux.chinaunix.net\/techdoc\/develop\/2008\/03\/17\/983664.shtml\" rel=\"nofollow\">http:\/\/linux.chinaunix.net\/techdoc\/develop\/2008\/03\/17\/983664.shtml<\/a><\/li>\n<li>sizeof \u548c strlen \u7684\u533a\u522b<br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/23293308\/difference-between-sizeof-and-strlen-in-c-linux\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/23293308\/difference-between-sizeof-and-strlen-in-c-linux<\/a><\/li>\n<li><strong><span style=\"color: #ff0000;\">\u628a sizeof \u7528\u5728\u83b7\u53d6 malloc \u5206\u914d\u7684\u7a7a\u95f4\u5927\u5c0f\u4e0a\u662f\u5426\u53ef\u884c\uff1f(NO)<\/span><\/strong><br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/492384\/how-to-find-the-sizeof-a-pointer-pointing-to-an-array\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/492384\/how-to-find-the-sizeof-a-pointer-pointing-to-an-array<\/a><br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/1570759\/getting-the-size-of-the-data-of-a-pointer\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/1570759\/getting-the-size-of-the-data-of-a-pointer<\/a><br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/17298172\/how-does-sizeof-work-for-char-pointer-variables\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/17298172\/how-does-sizeof-work-for-char-pointer-variables<\/a><br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/13551017\/find-the-size-of-a-string-pointed-by-a-pointer\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/13551017\/find-the-size-of-a-string-pointed-by-a-pointer<\/a><br \/>\n<a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/2259890\/using-sizeof-on-mallocd-memory\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/2259890\/using-sizeof-on-mallocd-memory<\/a><\/li>\n<li><a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/1533519\/newbie-questions-about-malloc-and-sizeof\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/1533519\/newbie-questions-about-malloc-and-sizeof<\/a><\/li>\n<li><a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/5451104\/how-to-get-memory-block-length-after-malloc\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/5451104\/how-to-get-memory-block-length-after-malloc<\/a><\/li>\n<li><a class=\"external-link\" href=\"https:\/\/stackoverflow.com\/questions\/10639666\/how-to-determine-the-size-of-an-allocated-c-buffer\" rel=\"nofollow\">https:\/\/stackoverflow.com\/questions\/10639666\/how-to-determine-the-size-of-an-allocated-c-buffer<\/a><\/li>\n<\/ul>\n<p>=END=<\/p>\n","protected":false},"excerpt":{"rendered":"<p>=Start= \u7f18\u7531\uff1a \u6700\u8fd1\u5728\u7528C\u8bed\u8a00\u5199\u7a0b\u5e8f\uff0c\u7531\u4e8eC\u8bed\u8a00\u7684\u57fa\u7840\u5df2\u7ecf\u5fd8\u5f97\u5dee\u4e0d\u591a\u4e86\uff08\u4e5f\u53ef\u80fd\u662f\u4e4b\u524d\u5c31\u6ca1\u5b66\u597d\u2026\u2026\uff09\uff0c\u5728 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,11,7],"tags":[100,30,797,799],"class_list":["post-3319","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-linux","category-programing","tag-c","tag-linux","tag-malloc","tag-sizeof"],"views":4507,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/3319","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=3319"}],"version-history":[{"count":1,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/3319\/revisions"}],"predecessor-version":[{"id":3320,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/3319\/revisions\/3320"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=3319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=3319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=3319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}