1| typedef struct container{
2| char* abc;
3| }container;
4|
5|
6| int main(void){
7|
8| container* xyz = malloc(sizeof(container));
9|
10| xyz->abc = malloc(10);
11| xyz->abc = "abcdefghi\0";
12|
13| free(xyz->abc);
14| free(xyz);
15| }
Run Code Online (Sandbox Code Playgroud)
根据Valgrind的说法,第10行有泄漏,这意味着免费(xyz-> abc)不起作用.我怎么能解脱这个?
你分配了10个字节,并存储了一个指向那些bytes(xyz->abc)的指针,然后你立即用指向字符串文字("abcdefghi\0")的指针替换了该指针.
您的计划有几个问题:
\0字符串文字过多- 为什么?free- 你没有的东西malloc(被替换的指针)malloc/ free(假设c ++标签不是假的)在C语言中,使用strdup到布设abcdefghi到您的动态分配的缓冲区.
在C++中,忘记这一点并切换到std::string.
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |