嵌入式開發中的一些細節續(dlmu2001

2021-04-02 07:56:41 字數 824 閱讀 2678

7.關於區域性變數

區域性變數是在棧上分配的空間,只在函式內部有效,退出函式,空間就釋放了,看一下一下幾個例子

1)void* dlmu_malloc()

char buf[100];

return (void*)buf;

2)void*dlmu_malloc()

char *p;

char buf[100];

p = buf;

return (void*)p;

這兩個例子都是分配不到空間的,因為buf是區域性變數,隨著函式退出(拋棧),空間就釋放了。

3)void  *dlmu_malloc(unsingned long size)

char *p;

p = malloc(size);

return p;

這是可以分配到空間的,因為malloc是在堆上分配的,要自己管理。

8.函式引數的傳值和傳址,看乙個例子

char dlmu_malloc(unsigned long size,char *buf)

buf = malloc(size);

return 1;

注意函式呼叫過後,這個buf的值是不會改變的,如果傳入時buf的值是null,則傳出時buf也是null,這是因為buf雖然是個指標,但是這裡還是乙個傳值操作,如果要完成傳址,應該這樣

char dlmu_malloc(unsigned long size,char **buf)

* buf = malloc(size);

if(*buf ==null)    return 0;

return 1;

這才是傳址

嵌入式開發中的一些細節

從事開發一年多,發現到一些小細節,會影響到自己開發的效率,特總結如下,以免犯錯 1.標準c中str系列的函式中,0 有特殊的含義 字串結束 所以如果要操作具有0x00 有實際意義 的字串,不應該用該系列的函式。例 有字串 0nocookie 0nocache 0 本義是想用 0 來表示分隔符,分隔出...

嵌入式開發中的一些細節(dlmu2001

從事開發一年多,發現到一些小細節,會影響到自己開發的效率,特總結如下,以免犯錯 1.標準c中str系列的函式中,0 有特殊的含義 字串結束 所以如果要操作具有0x00 有實際意義 的字串,不應該用該系列的函式。例 有字串 0nocookie 0nocache 0 本義是想用 0 來表示分隔符,分隔出...

Linux嵌入式開發的一些總結

宋立新email zjujoe yahoo.com 做了幾年 linux 底層嵌入式開發,有一些心得,這裡記錄下來,作為進一步學習 linux 之前的乙個總結。daily build nokia microsoft 等,都採用了該機制。是終端產品開發中乙個 best practise.其好處有 構建...