使用sizeof 計算記憶體容量的問題

2021-06-06 22:58:06 字數 815 閱讀 1162

困擾了多日的問題,今天終於解決了,問題出在sizeof()函式上。

問題的現象:

在使用wcscpy_s對tchar*變數進行賦值時,提示記憶體空間太小。

出錯資訊見下圖

);問題的原因:

tchar *stringa=new tchar[100];

wcscpy_s(stringa,sizeof(stringa),"abcd");//對stringa進行賦值時,出錯

sizeof(stringa)的值是4,小於字元粗"abcd"的長度(長度為5),所以提示以上錯誤資訊。

sizeof(stringa)的值實際上是sizeof(tchar*)的值,而不是stringa所指向的記憶體空間的長度。

在林銳的《高質量c++/c程式設計指南》7.3.3節中有詳細介紹,之前也看過幾遍,但是在用的時候還是出錯了。

位址匯流排,字長,記憶體容量,定址範圍 之間的計算

處理機字長是指處理機能同時處理 或運算 的位數,即同時處理多少位 bit 資料。比如intel pentium 4處理器字長為32位,它能同時處理32位的資料,也即它的資料匯流排為32位。以前的處理器比如8086,則為16位處理器,現在新興的64位處理器,它的資料吞吐能力更強,即能同時對64位資料進...

關於位址匯流排,字長,記憶體容量,定址範圍的計算

在軟考學習中我們經常遇到計算位址匯流排 記憶體等方面的題,這也是我們大家經常混亂的知識,下面就讓我們來共同學習一下 處理機字長是指處理機能同時處理 或運算 的位數,即同時處理多少位 bit 資料。處理器的字長越大,說明它的運算能力越強。比如我們的膝上型電腦,現在一般都是64位的電腦,這也就是說我們的...

位址匯流排,字長,記憶體容量,定址範圍 之間的計算

處理機字長是指處理機能同時處理 或運算 的位數,即同時處理多少位 bit 資料。比如intel pentium 4處理器字長為32位,它能同時處理32位的資料,也即它的資料匯流排為32位。以前的處理器比如8086,則為16位處理器,現在新興的64位處理器,它的資料吞吐能力更強,即能同時對64位資料進...