For example, is the following function legal:

```
struct two_int {
  const int a, b;
}

void copy_two(const two_int *src, two_int *dest) {
  memcpy(dest, src, sizeof(two_int));
}

```

It seems like at least *some* types of modifications of constant-defined values is not allowed, but it is not clear to me if this qualifies.

If the answer is "it is **not** allowed, in general", I'm also wondering about the special case where `dest` is newly allocated memory with `malloc` (and hence hasn't yet been assigned any value), such as:

```
two_int  s = {.a = 1, .b = 2};
two_int *d = malloc(sizeof(two_int));
copy_two(&s, d);

```

**Update:** It seems like the latter question seems to answered in the affirmative (it's OK) for the case of a newly `malloc`'d structure, but the original, more general question still stands, I think.