【发布时间】:2017-02-28 16:24:43
【问题描述】:
背景: 单片机:MKL26Z128 IDE:Kinetis Design Studio 3.0.0
此代码将 usbStringDescriptors 的地址设置为零。
uint8_t usbStringDescriptors[NUM_OF_STRING_DESCRIPTORS][MAX_BYTES_PER_USB_STRING] = {0};
uint8_t manStringDescriptor[MAX_BYTES_PER_USB_STRING] = {0};
...来自列表文件
225 .LFE57:
227 .global usbStringDescriptors
228 001e C046 .section .bss.usbStringDescriptors,"aw",%nobits
229 .align 2
232 usbStringDescriptors:
233 0000 00000000 .space 198
233 00000000
233 00000000
233 00000000
233 00000000
234 .global manStringDescriptor
235 00c6 0000 .section .bss.manStringDescriptor,"aw",%nobits
236 .align 2
239 manStringDescriptor:
240 0000 00000000 .space 66
...在地图文件中
.bss.usbStringDescriptors
0x00000000 0xc8 ./adapter/common/usb_core_ksdk/host/host_iAP.o
这段代码没有。
uint8_t usbStringDescriptors[NUM_OF_STRING_DESCRIPTORS][MAX_BYTES_PER_USB_STRING];
uint8_t manStringDescriptor[MAX_BYTES_PER_USB_STRING];
...来自列表文件
225 .LFE57:
227 .comm usbStringDescriptors,198,4
228 .comm manStringDescriptor,66,4
【问题讨论】:
-
因为第一个说 =0 而第二个没有?
-
为什么第二个代码应该将值设置为零?与第一个代码不同,您没有要求它。
-
由于数组不是指针,因此数组不可能有 0“值”。如果使用显示 0 作为其值的数组不会导致崩溃,我会说这是您的调试器的问题,您应该忽略它。
-
您能否显示所有您用来获得该结果的代码?一个完整的示例将有助于确保不是将指针设置为空值。
-
我们需要可编译和可执行的代码,或者一个水晶球,而我的目前无法使用......
标签: c arrays initialization memory-address