[问题] 使用双重指标的题目有问题

楼主: mouwat (QQ)   2020-09-02 10:47:23
不好意思又来麻烦大家指点
题目是codewar使用双重指标的问题
使用C语言
https://www.codewars.com/kata/534d2f5b5371ecf8d2000a08/train/c
我查询双重指标的使用方法后试着写了却出不来结果
参考内容
https://imgur.com/B2gM9rm.jpg
写了以下的code
https://ideone.com/sQjKpG
显示结果
https://imgur.com/kfjG0FH.jpg
之前发生类似的问题通常是宣告范围有问题...
有请写C++朋友帮看一下 但他说不太熟这部分
烦请指点迷津
作者: Lipraxde (Lipraxde)   2020-09-02 11:24:00
你看看人家 tmp malloc 写在哪?你写在哪?啊...我看错惹...我看题目的意思应该是要你帮每个 row 都 allocate 一块空间,不过你是 allocate 一整块。所以在它 free memory 的阶段会出错
作者: sarafciel (Cattuz)   2020-09-02 12:07:00
因为他test的部分free是每条row分开free的你直接alloc一整块出来就会变成double free
作者: Lipraxde (Lipraxde)   2020-09-02 12:29:00
题目的 note 意思就是要你这样 allocate memory。并不是 double free。第一个 row 以外的 rows 指到的是tmp 加一个偏移量的位置,free 的时候由于这些 pointers 不是 allocate 出来的,所以会出现 invalid pointer的错误
作者: sarafciel (Cattuz)   2020-09-02 13:11:00
啊对,这个不算double free,感谢指正XD
作者: loveme00835 (发箍)   2020-09-02 15:06:00
需要加的不是 C 语言malloc()/calloc() 完以后会回传的指标, 而这些指标就是需要给 free() 的引数, 所以呼叫次数先要对得上才行, 这是大原则.
作者: Lipraxde (Lipraxde)   2020-09-02 17:56:00
你可以自己写几只程式后用 valgrind 跑,valgrind 会告诉哪边对内存的操作有问题
作者: loveme00835 (发箍)   2020-09-03 05:37:00
为什么你在呼叫函式以前不先看它的说明, 而是靠别人写的程式码来猜用途?
作者: reemir   2020-09-22 10:06:00
什么叫做双重指标?有这种东西吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com