const に値が代入できるのはなぜですか?
How to initialize const members of structs on the heap を参考に以下の様なプログラムを書きました。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
const int* make_immutable_point(int x){
void *p = malloc(sizeof(const int));
if (p == NULL) abort();
const int temp = x;
memcpy(p, &temp, sizeof(temp));
return (const int*)p;
}
int main() {
const int *f = make_immutable_point(10);
*f=50; // エラー
printf("%d,",*f);
}
メイン関数内で *f=50;
のように記述するとエラーとなります。
これは const
として値が確保されているからなのでしょうが、
なぜ、このように記述すると動的に const
が確保できているのかがわかりません。