C_and_CPP 板


LINE

不好意思又来麻烦大家指点 题目是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++朋友帮看一下 但他说不太熟这部分 烦请指点迷津 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.71.13.253 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1599014848.A.740.html
1F:→ Lipraxde: 你看看人家 tmp malloc 写在哪?你写在哪? 09/02 11:24
先谢谢你肯花时间帮我看 不过我其实是有照抄过的,也会有一样的结果 https://imgur.com/2fYvtAH.jpg
後来会改用这样写是因为在参考其他人解答时,看起来可以这样宣告 https://imgur.com/wYGnH8p.jpg
怎样宣告才是没有问题的,也希望不吝指教,谢谢
2F:→ Lipraxde: 啊...我看错惹... 09/02 11:36
3F:→ Lipraxde: 我看题目的意思应该是要你帮每个 row 都 allocate 一块 09/02 11:38
4F:→ Lipraxde: 空间,不过你是 allocate 一整块。所以在它 free memor 09/02 11:38
5F:→ Lipraxde: y 的阶段会出错 09/02 11:38
请问你的意思是,虽然我参考的网页用了这两种宣告记忆体的方式去说明双重指标 但是这两种方式使用上还是会有甚麽差异是吗 有可能因为验证的程式码的关系,我只能用另一种方式宣告这样吗 ※ 编辑: mouwat (118.163.136.235 台湾), 09/02/2020 12:04:00
6F:→ sarafciel: 因为他test的部分free是每条row分开free的 09/02 12:07
7F:→ sarafciel: 你直接alloc一整块出来就会变成double free 09/02 12:08
8F:→ Lipraxde: 题目的 note 意思就是要你这样 allocate memory。 09/02 12:29
9F:→ Lipraxde: 并不是 double free。第一个 row 以外的 rows 指到的是 09/02 12:29
10F:→ Lipraxde: tmp 加一个偏移量的位置,free 的时候由於这些 pointe 09/02 12:29
11F:→ Lipraxde: rs 不是 allocate 出来的,所以会出现 invalid pointer 09/02 12:29
12F:→ Lipraxde: 的错误 09/02 12:29
请问这个错误的原因是我下面提到的吗 如果不是的话是否能麻烦你说得再详细一点呢
13F:→ sarafciel: 啊对,这个不算double free,感谢指正XD 09/02 13:11
因为我目前写题目而以没用过free,刚查了一下再请教一下 1. 如果我现在是用一开始的宣告方式 int **feeback, *tmp; feeback=(int**)calloc(n,sizeof(int*)); tmp=(int*)calloc(n*n,sizeof(int)); 那是否在free的时候是这样做 free(feeback); free(tmp); 2. 如果我是用先宣告行再宣告列的方式 int **feeback=calloc(n,sizeof(int*)) for(i=0;i<n;i++) feeback[i]=(int)calloc(n,sizeof(int)); 那是否在free的时候是这样做 for(i=0;i<n;i++) free(feeback[i]); free(feeback); 3. 另外想问一下格式问题 int **feeback=(int**)calloc(n,sizeof(int*)); feeback=(int**)calloc(n,sizeof(int*)); 黄色部分的意义跟必要性是...? 有的有加有的没加,我有点不太确定 再麻烦指教了 ※ 编辑: mouwat (118.163.136.235 台湾), 09/02/2020 15:05:35
14F:→ loveme00835: 需要加的不是 C 语言 09/02 15:06
不好意思,这句不太懂...
15F:→ loveme00835: malloc()/calloc() 完以後会回传的指标, 而这些指标 09/02 15:10
16F:→ loveme00835: 就是需要给 free() 的引数, 所以呼叫次数先要对得上 09/02 15:10
17F:→ loveme00835: 才行, 这是大原则. 09/02 15:10
请问你的意思是我第二项要加上红字部分才对吗 我宣告了一次作为col,又以col各element宣告了一次row 所以我要先free掉row,再free掉col 这样对吗? 另外也请问第一项free的对吗 ※ 编辑: mouwat (118.163.136.235 台湾), 09/02/2020 15:27:15 ※ 编辑: mouwat (118.163.136.235 台湾), 09/02/2020 15:59:27
18F:→ Lipraxde: 你可以自己写几只程式後用 valgrind 跑,valgrind 会告 09/02 17:56
19F:→ Lipraxde: 诉哪边对记忆体的操作有问题 09/02 17:56
这个好像只有linux上可以用,大家一般写完code都会用这个检查吗?
20F:→ loveme00835: 为什麽你在呼叫函式以前不先看它的说明, 而是靠别人 09/03 05:37
21F:→ loveme00835: 写的程式码来猜用途? 09/03 05:37
我是看完书以後试解题目,解不出来参考别人解答,常常有看不懂的东西
22F:嘘 reemir: 什麽叫做双重指标?有这种东西吗? 09/22 10:06
google很容易找到喔,我也没在学校学过C的课程 如果你想展现用语的正统性,是不是可以多叙述一些指点一二呢 ※ 编辑: mouwat (114.137.68.42 台湾), 10/01/2020 23:36:11
23F:推 Matz: 是指标的指标吧 03/14 19:18







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP