2014-01-08 5 views
0

Я пытаюсь просто выделить память указателю на char (его предполагается хранить шестнадцатеричные значения позже) Как только я запустил этот код, программа выйдет из строя. (я должен использовать C-String)Я не могу выделить память для своего указателя char

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

Я вижу это по всему интернету, как пример, но он не на моей машине. Зачем?

+1

Почему malloc (который является C), а не новый (который является C++) – olevegard

+0

, как это будет выглядеть? – JustAJavaProgrammer

+0

Как он чаше? Это ошибка компилятора? –

ответ

5

Хорошо, решение было таким простым, как вопрос должен был быть ... Я не видел, чтобы файл .exe не мог быть сгенерирован, и поэтому я запускал старый .exe-файл, скомпилированный 1 час назад ...

+2

Oh dear ............ –

+0

Upboated для смеха. – 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

@Vishal это может означать что угодно. Я не телепат. –

Смежные вопросы