質問編集履歴
3
修正追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,8 +5,6 @@
|
|
5
5
|
|
6
6
|
valgrindで調べてみたところ、どうやらこの関数に原因があるみたいですが、
|
7
7
|
原因がなかなか発見できません。直すべき点や解決方法などありましたら教えてほしいです。
|
8
|
-
|
9
|
-
*main関数とmy_substrのコードしか載せてないです。
|
10
8
|
|
11
9
|
```C
|
12
10
|
HEAP SUMMARY:
|
@@ -60,6 +58,47 @@
|
|
60
58
|
return (res);
|
61
59
|
}
|
62
60
|
|
61
|
+
static char **ssplit(char **res, const char *str, size_t col, const char c)
|
62
|
+
{
|
63
|
+
size_t i;
|
64
|
+
size_t j;
|
65
|
+
size_t len;
|
66
|
+
char **tmp;
|
67
|
+
|
68
|
+
i = 0;
|
69
|
+
j = -1;
|
70
|
+
while (++j < col)
|
71
|
+
{
|
72
|
+
tmp = res;
|
73
|
+
while (str[i] == c)
|
74
|
+
i++;
|
75
|
+
len = my_strup(str + i, c);
|
76
|
+
res[j] = my_substr(str + i, 0, len);
|
77
|
+
if (res[j] == NULL)
|
78
|
+
return (my_clear(res, j));
|
79
|
+
i += len;
|
80
|
+
}
|
81
|
+
res[j] = NULL;
|
82
|
+
free(tmp);
|
83
|
+
return (res);
|
84
|
+
}
|
85
|
+
|
86
|
+
char **my_split(char const *str, char c)
|
87
|
+
{
|
88
|
+
char **ss;
|
89
|
+
size_t count;
|
90
|
+
char **put_ssplit;
|
91
|
+
|
92
|
+
if (!str)
|
93
|
+
return (NULL);
|
94
|
+
count = my_word_count(str, c);
|
95
|
+
ss = (char **)malloc(sizeof(char *) * (count + 1));
|
96
|
+
if (!ss)
|
97
|
+
return (NULL);
|
98
|
+
put_ssplit = ssplit(ss, str, count, c);
|
99
|
+
return (put_ssplit);
|
100
|
+
}
|
101
|
+
|
63
102
|
int main(int argc, char **argv)
|
64
103
|
{
|
65
104
|
char *map_read;
|
2
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -66,8 +66,7 @@
|
|
66
66
|
char **after_split;
|
67
67
|
int fd;
|
68
68
|
int lem_i;
|
69
|
-
|
70
|
-
fd = open(
|
69
|
+
fd = open(argv[1], O_RDONLY);
|
71
70
|
|
72
71
|
while(map_read != NULL)
|
73
72
|
{
|
1
色を付けて見やすくしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,8 @@
|
|
8
8
|
|
9
9
|
*main関数とmy_substrのコードしか載せてないです。
|
10
10
|
|
11
|
+
```C
|
11
|
-
|
12
|
+
HEAP SUMMARY:
|
12
13
|
==5996== in use at exit: 26 bytes in 5 blocks
|
13
14
|
==5996== total heap usage: 10 allocs, 8 frees, 357 bytes allocated
|
14
15
|
==5996==
|
@@ -29,7 +30,7 @@
|
|
29
30
|
==5996== To see them, rerun with: --leak-check=full --show-leak-kinds=all
|
30
31
|
```
|
31
32
|
|
32
|
-
```
|
33
|
+
```C
|
33
34
|
char *my_substr(char const *string, unsigned int start, size_t len)
|
34
35
|
{
|
35
36
|
char *res;
|