下面的代码为什么赋值之后不对

2018-09-11 16:44:43 +08:00
 v2byy

https://i.loli.net/2018/09/11/5b977fcb2e371.png

赋值之后:

https://i.loli.net/2018/09/11/5b977fcb3515e.png

func_name 为字符串"wait", 但是赋值之后却不是这个值

相关声明如下:


typedef struct _local_func {
	const char *func_name;	// function name
	lua_CFunction func_ptr;	// function pointer
	const char *help_info;	// help information for this function
} LOCAL_FUNC;

LOCAL_FUNC g_local_func;

4298 次点击
所在节点    C
37 条回复
Dori
2018-09-11 17:32:00 +08:00
踩踩
coderluan
2018-09-11 17:35:43 +08:00
->
raysonx
2018-09-11 19:00:34 +08:00
代码看起来没有问题,不过我好奇的是 g_local_func 看起来是一个结构体变量,你是怎么应用下标的?
kljsandjb
2018-09-11 19:41:39 +08:00
上下文感觉不够啊…看不出来,还有 g_local_func 是个结构体数组?不一样至少说明 func_name 指向的内存被破坏了吧?看看栈有没有被破坏或者如果你是分配在堆上的话,是不是内存管理出了问题😂
bp0
2018-09-11 21:49:33 +08:00
g_local_func 不是数组吧,怎么看都只是一个全局变量而已。去掉[i]试试看。
si
2018-09-11 22:07:16 +08:00
猜不到是怎么赋值的
inoki
2018-09-11 22:22:22 +08:00
lua interpreter 源代码?
Deville
2018-09-11 23:38:55 +08:00
只能看得出是 vs 2017....
zyp0921
2018-09-12 09:03:31 +08:00
这是 C 语言吧
v2byy
2018-09-12 09:24:41 +08:00
@raysonx 笔误,已 append
v2byy
2018-09-12 09:27:07 +08:00
@kljsandjb 恩,我是通过 malloc 来给 g_local_func 分配的内存,是这样的,我使用在 c 文件中声明并给 g_local_func 分配内存,然后在另外一个 c 文件中通过 extern 导入 g_local_func 变量,然后调用的这个方法。
v2byy
2018-09-12 09:27:32 +08:00
@bp0 笔误了,已 append
v2byy
2018-09-12 09:29:11 +08:00
@inoki 不是哦,export 一些函数给 lua 用而已。
v2byy
2018-09-12 09:30:24 +08:00
@Deville 怎么看出 vs2017 的?

@zyp0921 源代码是 c++
wutiantong
2018-09-12 09:33:56 +08:00
@v2byy 看起来不会有你所说的“赋值不对”的问题,建议你直接 printf(%s, %p)出来看看?
tusj
2018-09-12 09:38:37 +08:00
感觉是乌龙
ipwx
2018-09-12 10:07:43 +08:00
用 *g_local_func
raysonx
2018-09-12 10:47:51 +08:00
从楼主给出的上下文中看不出任何问题,怀疑:
1. 调试器故障。
2. 编译器故障。
3. 多线程运行,全局数组被覆盖。
v2byy
2018-09-12 16:25:39 +08:00
@tusj 请看下 append
v2byy
2018-09-12 16:26:03 +08:00
@raysonx 没有这么复杂,感觉是我理解的有问题,但是不知道在哪?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX