プロが教える店舗&オフィスのセキュリティ対策術

/*10バイトのメモリ領域を確保し、その領域に文字列"Allocate"を代入せよ。*/
/*ただし、確保した領域は、プログラム終了までに開放すること。*/
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
char *ptr;
ptr = (char *)malloc(10);
printf("Allocate\n");
free(ptr);
}

今、ライブラリ関数を勉強しています。
この問題をとりあえず作ってみて、実行も成功したのですが、10バイトのメモリ確保の数値を変えても、何も変わらないため本当に問題の要求どおりのプログラムが作れているのか謎です。
間違っているなどのアドバイス宜しくお願いします。

A 回答 (1件)

間違っているのは



1.文字列の代入を行っていない.
2.printfで表示させるのはptrであるべき.

の2点だと思います.

最初に
char pre_copy[] = "Allocate";
などと,コピー元文字列を作成しておき,
mallocでptrのメモリ領域の確保を行ったら,
strcpyなどを用いてpre_copyからptrの領域へ文字列コピーしてみてください.
その後,
printf("%s\n",ptr);
を記述し,コンパイルして実行してみてください..
十分な量をメモリ領域を確保していない場合に,エラーが出ます.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!