Qiita 7 - キータぞ、来たぞ、キータだぞー (765レス)
上下前次1-新
751: 03/18(水)22:56 ID:IinJ/Cgw(3/3) AAS
無関係なラッピングを持ち出しそれに固執していることからも本質を理解できていないとみえる
752: 03/18(水)22:58 ID:Pr3hbF5X(5/5) AAS
「そんなクソな書き方しねぇよ」という話が理解できない人いんのねw
753: 03/18(水)23:05 ID:3L+0H3qv(1) AAS
今回ラッピングなんかはどうでもよくて根本の話は>>742だよね
可変長ならば先頭アドレスと長さをセットで持たなければならない
固定長ならば先頭アドレスのみ持てばよくて長さは型情報として持つべきである
754: 03/18(水)23:55 ID:LfUPYerJ(2/2) AAS
ID:IinJ/Cgwはashworthかな
755: 03/19(木)00:25 ID:1fNhLbVo(1) AAS
そこは各型のデータが持つ情報により3つに分かれる
①アドレスのみ
②アドレスと有効長
③アドレスと有効長と容量
①は単体もしくは固定長の連続体
②は可変長の連続体
③は可変長の連続体で伸縮可
①の連続体の場合はその固定長の情報は型に含まれるため受け渡しする必要がない
記事『配列ポインタ型でサイズ安全な関数引数を実現する』が述べているのはそういうことで正しいが説明不足だな
756(2): 03/19(木)02:07 ID:/Wzj236o(1) AAS
『C言語の標準ライブラリを自作して学ぶ、安全なメモリ管理と文字列操作の真髄』
外部リンク:qiita.com
オーバーフローチェックは重要、みたいなこと書いてるのに
> // 実データの前に size_t 分のヘッダ領域を確保
> block = malloc(sizeof(size_t) + size);
冒頭のコードでオーバーフロー無視してるのはなあ、無能すぎね? つか42tokyoかあ。
757(2): 03/19(木)03:59 ID:r1H5OpTt(1) AAS
>>756
これで満足か?
#include <stdckdint.h>
size_t total_size{};
if (!ckd_add(&total_size, sizeof(size_t), size)) {
block = malloc(total_size);
}
758: 03/19(木)04:38 ID:MpYhWP5O(1) AAS
>>757
?
759(1): 03/19(木)07:10 ID:uGXjP4fl(1) AAS
C23でようやく標準化されたオーバーフローチェックなんて99%のプログラマーが今後も知らないままだろう
標準化があまりにも遅すぎた
C++23の新機能も同じだ
みんな知らない学習する気もない使う気もない広まらない
760: 03/19(木)11:36 ID:TvMFZsLL(1) AAS
>>757
> これで満足か?
その記事のおかしいとこそこだけだと思った?
761: 03/19(木)19:51 ID:qPkzmLAQ(1) AAS
>>759 expectedが追加されてるけど、例外使いまってる既存資産から置き換えも考えずらいし、新規で使うにも別にC++じゃなくても良くね?な型。
762(1): 03/19(木)22:45 ID:UtYRo7C2(1) AAS
CとC++の標準拡張が連携とれてないよな
この言語はもうダメだ
763: 03/20(金)13:02 ID:iXoBkJ/Y(1) AAS
>>762
言語は思考を規定する
764: 03/21(土)13:52 ID:JUJDvVUv(1) AAS
>>756
> C言語を学び始めると、標準ライブラリ(stdio.h, stdlib.h, string.hなど)の便利さに気づきます。しかし、その内部で何が起きているのかを意識することは少ないかもしれません。
>
> そこで私は、C言語の標準関数のゼロから再実装に取り組みました。
とか言っててft_mallocの実装mallocのラッパーになっててクソワロタw
> 1. メモリブロックへの「メタデータ」埋め込みによる ft_realloc の実装
glibcならmalloc_usable_sizeでメモリーブロックのサイズ取得できるのに車輪の再発明だなあ。将来的にmalloc部分も自作するとしてメモリーブロックのサイズはどっかに格納すんだしmalloc使ってるならmalloc_usable_size使うで良かろう。
ft_reallocもメモリーブロック再割り当て必要ない場合も常に新しいメモリーブロック割り当てるし第1引数にNULL渡された場合も考慮されてないなあ。
よくこんな記事スクール名誇らしげに明記しながら公開するもんだわw
765: 03/22(日)02:13 ID:wZUeCGG3(1) AAS
> これで満足か?
>
> #include <stdckdint.h>
> size_t total_size{};
> if (!ckd_add(&total_size, sizeof(size_t), size)) {
> block = malloc(total_size);
> }
記事主のレベルに合わせて
if (size > SIZE_MAX - sizeof(size_t)) return NULL;
で良くね?
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.609s*