可能重复:
C字符串文字:它们去哪里了?
我所知道的,
通常,指针必须由malloc()分配,并将分配给堆,然后由free()取消分配;
和
非指针(int,char,float等)将自动分配给堆栈,并且只要函数返回就不会分配
但是,从以下代码:
#include <stdio.h>
int main()
{
char *a;
a = "tesaja";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将a
分配到哪里?堆栈还是堆?
我正在使用glade 3,创建TreeView并成功添加了行作为算法完成,但我有一个小问题,因为treeview将添加新行,因此我的"GUI"将变得更长到下面,我怎么能添加滚动条为这个TreeView?为了让我的"GUI"不再存在?
注意:我已添加"新调整"并将其连接到TreeView和ScrollBar垂直,但仍然无法完成工作.
任何的想法?
伙计们,我创建了一个由GTK +库和一些链表组成的应用程序
当我看到通过htop
它的资源显示如下:
1 [|||||||||||||||||||||| 24.4%] Tasks: 117, 163 thr; 1 running
2 [|||||||||||||||||||| 21.8%] Load average: 0.22 5.09 7.51
Mem[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 330/2003MB] Uptime: 6 days, 02:09:22
Swp[||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 220/254MB]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1843 rahulyud 20 0 94496 9296 5596 S 17.0 0.5 0:57.59 gnome-terminal
1118 root 20 0 41112 8556 2612 S 14.0 0.4 25h13:05 /usr/bin/X :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-ubcbQV/database -nolisten tcp vt7
3035 root 20 0 2808 1468 …
Run Code Online (Sandbox Code Playgroud) 伙计们,我对C中的记忆问题有疑问
请看以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *tesaja(char *data)
{
char *tmp = (char*)malloc(sizeof(char) * strlen(data));
tmp = data;
return tmp;
}
int main()
{
//area 1
char *wew = tesaja("budipergikepasar");
printf("nilai wew : %s\n",wew);
//area 2
wew = tesaja("kepasarbudisedangpergi");
printf("nilai wew : %s\n",wew);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并显示如下输出:
nilai wew : budipergikepasar
nilai wew : kepasarbudisedangpergi
Run Code Online (Sandbox Code Playgroud)
我唯一的问题是,区域1中的内存是否会自动解除分配并替换为新内存?
thx提前
我在这里有几行:
#include <stdio.h>
char *tolower(char *data)
{
char *p = data;
while(*p)
{
printf("nilai p : %c\n",*p);
if(*p >= 'A' && *p <= 'Z')
{
*p += ('a' - 'A');
}
p++;
}
return p;
}
int main()
{
char *a = "HajAR BleH";
char *b = tolower(a);
printf("nilai b : %s\n",b);
printf("nilai a - A : %d\n",'a' - 'A');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
接下来,编译,在gdb上运行,并跟踪分段
xxx@aaa:/tmp$ gcc -o aa aa.c --debug
xxx@aaa:/tmp$ gdb -q aa
Reading symbols from /tmp/aa...done.
(gdb) r …
Run Code Online (Sandbox Code Playgroud)