亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4687 | 回復(fù): 14
打印 上一主題 下一主題

求高手,關(guān)於malloc(0); [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-12-14 00:17 |只看該作者 |倒序?yàn)g覽
見如下代碼:
  1. char *ptr;  
  2. if ((ptr = (char *)malloc(0)) ==  NULL)  
  3. else  
  4.         puts("Got a null pointer");  
  5. puts("Got a valid pointer");  
復(fù)制代碼


為什麼結(jié)果是:Got a valid pointe

我個(gè)人的理解是:給ptr指向了一個(gè)非NULL的有效地址,盡管這個(gè)地址大小僅為0,而NULL是一個(gè)為0x00000000的起始址,代表一個(gè)無效地址。

不知道正確與否,期待高手解答!

評分

參與人數(shù) 1可用積分 +1 收起 理由
shang2010 + 1 原創(chuàng)內(nèi)容

查看全部評分

論壇徽章:
1
申猴
日期:2014-02-11 14:50:31
2 [報(bào)告]
發(fā)表于 2010-12-14 00:24 |只看該作者
實(shí)現(xiàn)有關(guān)

即使是malloc(0),在某個(gè)實(shí)現(xiàn)中可能也分配了16個(gè)字節(jié)的大小

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-12-14 00:31 |只看該作者
回復(fù) 2# chenzhanyiczy


    因?yàn)檠Y面是有地址對比,其實(shí)malloc(0)的地址是一個(gè)有效地址,而NULL是一個(gè)非法地址。是吧?可以這樣來理解嘛,

而至於malloc(0)是否分配有效的大小的地址,其實(shí)並不重要吧?

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
4 [報(bào)告]
發(fā)表于 2010-12-14 08:46 |只看該作者
Linux man:

If the size of the space  requested  is  0,  the behavior is implementation-defined: the value returned shall be either a null pointer or a unique pointer.

MSDN:
If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item.

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
5 [報(bào)告]
發(fā)表于 2010-12-14 08:52 |只看該作者
Linux man:

If the size of the space  requested  is  0,  the behavior is implementation-defined:  ...
hellioncu 發(fā)表于 2010-12-14 08:46



    總是這么的專業(yè)。linux中有2種情況,windows中就返回null

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
6 [報(bào)告]
發(fā)表于 2010-12-14 09:00 |只看該作者
總是這么的專業(yè)。linux中有2種情況,windows中就返回null
rubylc_unix 發(fā)表于 2010-12-14 08:52



AIX:

If the size requested is 0, malloc returns NULL in normal circumstances. However, if the program was compiled with the
       defined _LINUX_SOURCE_COMPAT macro, malloc returns a valid pointer to a space of size 0.

HPUX:
The only external difference between the old malloc(3X) allocator and
      the malloc(3C) allocator is that the old allocator would return a NULL
      pointer for a request of zero bytes.  The malloc(3C) allocator returns
      a valid memory address.  This is not a concern for most applications.

看了之后更糾結(jié)了{(lán):3_189:}
盡量不要malloc 0字節(jié)為好

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-12-14 09:10 |只看該作者
vc中試了下,返回的不是null。。。

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
8 [報(bào)告]
發(fā)表于 2010-12-14 09:14 |只看該作者
回復(fù) 6# hellioncu


    是阿,估計(jì)也沒有什么好處吧

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-12-14 10:44 |只看該作者
標(biāo)準(zhǔn)中沒有規(guī)定的 就沒必要去計(jì)較了

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-12-14 12:52 |只看該作者
4樓v5
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP