2013-12-17 51 views
1

據我所知,putenv()的POSIX/Linux版本不會創建字符串的副本,而是將其作爲參數給出,因此不會保存以便使用例如。一個本地char數組作爲它的參數。putenv()的VC實現是否支持局部變量作爲參數?

我想知道的是,putenv()的Microsoft/VC實現是否也有此限制。

正如我所看到的那樣,MSDN文檔沒有明確地說出(與通過檢查Linux上的man putenv()返回的POSIX文檔相反)。

謝謝!

回答

1

POSIX函數putenv不贊成_putenv,並且(至少在VS2012中)不會編譯。但是,使用_putenv並且進入調試器確認傳遞的字符串複製的。相關的代碼信息A節(所傳遞的字符串被稱爲name):

screenshot

+0

謝謝!作爲旁註:你是如何設法在調試版本中進入_putenv()的?我只是拒絕這樣做。這是否與我編譯我的程序時設置了/ MDd標誌(即,這是否只適用於靜態CRT連接)?還是我在這裏錯過了別的東西?我正在使用VS2008 ...... – Bjoern

+0

@Bjoern歡迎您 - 只要您不使用Visual Studio Express,並且完成了全部安裝,您也可以獲得大部分MFC/ATL/CRT源代碼。 –

+0

只是要完成:我只是檢查了這一點,並可以證實VS2008的上述情況也是如此。 – Bjoern