2014-01-08 54 views
0

我想分配內存到字符指針(它應該存儲十六進制值後) 只要我運行此代碼程序崩潰。 (我必須使用C-字符串)我不能分配內存到我的字符指針

int main() { 
    char *c = (char*)malloc(sizeof(unsigned int)*2); 
} 

我看到這一切在互聯網上的例子,但它在我的機器上失敗。爲什麼?

+1

爲什麼malloc(這是C)而不是新的(這是C++) – olevegard

+0

看起來像什麼? – JustAJavaProgrammer

+0

它如何變亂?這是一個編譯器錯誤? –

回答

5

好的解決方案很簡單,因爲問題本應該是... 我沒有看到.exe文件無法生成,因此我正在運行1小時前編譯的舊.exe文件...

+2

哦,親愛的............ –

+0

爲了笑聲而升高。 – Shoe

0

試試這個:

#include <stdlib.h> // for malloc 
#include <stdio.h> 

int main() { 
    char *c = (char*)malloc(sizeof(unsigned int)*2); //It's work 

    printf("%d",sizeof(c)); 

    return 0; // required 
} 
+0

'return 0;'不是必需的。 – dreamlax

+0

理論上,如果你沒有包含'stdlib.h',那麼它就不會編譯,因爲C++(和C99)需要在使用它們之前聲明函數。 – dreamlax

1

malloc的是C,你正在試圖做C++。

我只想做到這一點:

char *c; 
c=new char[Max_Size]; 

顯然MAX_SIZE將是你的意圖數組的大小。

0

你沒有說你的意思是說它失敗了。在任何情況下,您必須包含標題<stdlib.h>

如果程序是用C寫的,或者是<cstdlib>如果程序用C++編寫。

C代碼:

#include <stdlib.h> 

int main() { 
    char *c = (char*)malloc(sizeof(unsigned int)*2); 
    free(c); 
} 

在任何情況下,你應該提出一個代碼,使重現的情況。我認爲這個問題不在這個代碼中,而是在你覆蓋內存的地方。您所展示的代碼我認爲是無關緊要的。

+0

他確實提到了失敗的意義。他說「程序崩潰」 – Vishal

+0

@它可能意味着什麼。我不是一個心靈探路者。 –