?
#include <stdio.h> #include <stdlib.h> /* * str is a literal. So it is allocated in readonly segment. It is OK to return * it. But the data pointed by the pointer can't be modified. */ char *static_pointer_return() { char *str = "world"; return str; } /* * Never to return a pointer pointing to data in stack. GCC issues a warning * for it. */ char *stack_pointer_return() { char str[] = "world"; return str; } void pointer_param(char * str) { printf("param pointer: %s\n", str); /* * If str is allocated from heap, free succeeds. If str is pointing to data * in stack, core dump. */ free(str); } int main(int argc, const char *argv[]) { printf("static pointer return: %s\n", static_pointer_return()); printf("stack pointer return: %s\n", stack_pointer_return()); char str[] = "hello"; pointer_param(str); return 0; }?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
